积极答复者
如何实现点击指定区域才弹出右键菜单,点击其它区域时保持沉默

问题
答案
-
写在控件的MouseDown事件里
if (e.Button == System.Windows.Forms.MouseButtons.Right) { if (e.Location在特定区域) { 控件.ContextMenuStrip = 指定的右键菜单; } else { 控件.ContextMenuStrip = new ContextMenuStrip(); } }
谢谢。不过我刚刚试验了一下,发现无论在哪里右键,依然都会出现快捷菜单……
而且,this.ContexMenuStrip.MouseDown+=new MouseEventHandler(ContextMenuStrip_MouseDown)也似乎没有作用(private void ContextMenuStrip_MouseDown(object sender, MouseEventArgs e)没有被调用)
我是不是哪里弄错了……
你搞错对象了,ContexMenuStrip是右键菜单,应该写在你要弹出右键菜单的控件的MouseDown事件里。- 已标记为答案 Yawness 2012年9月24日 3:43
全部回复
-
写在控件的MouseDown事件里
if (e.Button == System.Windows.Forms.MouseButtons.Right) { if (e.Location在特定区域) { 控件.ContextMenuStrip = 指定的右键菜单; } else { 控件.ContextMenuStrip = new ContextMenuStrip(); } }
谢谢。不过我刚刚试验了一下,发现无论在哪里右键,依然都会出现快捷菜单……
而且,this.ContexMenuStrip.MouseDown+=new MouseEventHandler(ContextMenuStrip_MouseDown)也似乎没有作用(private void ContextMenuStrip_MouseDown(object sender, MouseEventArgs e)没有被调用)
我是不是哪里弄错了……
-
写在控件的MouseDown事件里
if (e.Button == System.Windows.Forms.MouseButtons.Right) { if (e.Location在特定区域) { 控件.ContextMenuStrip = 指定的右键菜单; } else { 控件.ContextMenuStrip = new ContextMenuStrip(); } }
谢谢。不过我刚刚试验了一下,发现无论在哪里右键,依然都会出现快捷菜单……
而且,this.ContexMenuStrip.MouseDown+=new MouseEventHandler(ContextMenuStrip_MouseDown)也似乎没有作用(private void ContextMenuStrip_MouseDown(object sender, MouseEventArgs e)没有被调用)
我是不是哪里弄错了……
你搞错对象了,ContexMenuStrip是右键菜单,应该写在你要弹出右键菜单的控件的MouseDown事件里。- 已标记为答案 Yawness 2012年9月24日 3:43