关闭

关于contextMenuStrip控件的定位问题

标签: listviewobject
4253人阅读 评论(1) 收藏 举报
分类:

有很多朋友在初次碰到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控件有数据的地方右击弹出菜单了。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:122887次
    • 积分:1367
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:40篇
    • 译文:0篇
    • 评论:19条