关于contextMenuStrip控件的定位问题

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

  步骤一,

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

  给listview添加的代码如下(记得把listview的View属性先改成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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值