qilinshu

关于contextMenuStrip控件的定位问题

 

有很多朋友在初次碰到contextMenuStrip控件的时候都不知道如何固定使用的范围(如果不定位,那么使用contextMenuStrip控件的载体控件的任何范围都会触发事件,这显然不合理)。下面我以一个过来人的角度来给出定位代码,供碰到此类问题朋友参考。

步骤一,

我们先来创建一个contextMenuStrip的载体控件(用一个简单的listview控件来呈现简单的数据,便于观察)


listview添加的代码如下(记得把listviewView属性先改成Details类型,listview的名字为lv1):


          
lv1.Items.Add("小朱");
            lv1.Items[0].SubItems.Add("
");
            lv1.Items[0].SubItems.Add("24
");



步骤二,

我们给listview控件加载一个contextMenuStrip控件(先添加一个ContextMenuStrip控件,然后将listview控件的ContextMenuStrip属性选择为contextMenuStrip的名字即加载完毕),笔者这里给contextMenuStrip控件取名为context1并给context1添加了三个项.

然后我们运行程序来查看效果图:


contextMenuStrip控件虽然生效了,但是他的位置在listview控件的任意范围都可以出现!!! 这显然不合理。好了,下面我们来对范围进行定位。


步骤三,将listview控件中ContextMenuStrip属性选择为“无”(一定要去掉,之前我们为这个属性添加过名字为context1的contextMenuStrip)。


步骤四,触发listview控件的MouseClick事件,然后在事件中编写一些简单的代码。

private void lv1_MouseClick(object sender, MouseEventArgs e)

        {

           //鼠标右击才会触发contextMenuStrip控件,并且contextMenuStrip控件只在listview控件中有数据的时候才有效,这样就固定下了范围

            if (e.Button == MouseButtons.Right && lv1.SelectedItems.Count == 1)

            {

                context1.Show(MousePosition);

            }

        }

我们再来看下效果,鼠标只能在移到listview控件有数据的地方右击弹出菜单了。


呵呵,是不是很简单?希望通过这个简单的例子能给一些初学的朋友小小的帮助,笔者也是初学者,希望大家一起进步。

另外,我觉得最近博客园的风气很不好,贴子发到首页后如果是简单的技术贴就马上被踢掉。。。。。。笔者认为,不管是什么文章,只要能给别人带来帮助,让别人学到东西,哪怕是一点点也是好事,大家认为呢?

posted on 2007-11-08 17:03  博客园皇帝  阅读(9215)  评论(21编辑  收藏  举报

导航