datagridview,鼠标在单元格内(单元格处于编辑状态),如何屏蔽掉系统的右键菜单
在一个窗体里面,加了一个DataGridView..
DataGridView 的ContextMenuStrip属性设置为contextMenuStrip1
,如果DataGridView的单元格不是处于编辑状态时,,点鼠标右键是会弹出contextMenuStrip1的右键菜单。。
但是如果DataGridView的单元格是处于编辑状态时,,点鼠标右键是弹出一个操作系统的右键菜单和contextMenuStrip1,但是
操作系统的右键把contextMenuStrip1的右键菜单给挡住 了。。
我想问的是,,怎么给屏蔽掉操作系统的右键菜单。。
找了好久都没有找到。。
------最佳解决方案--------------------“操作系统的右键把contextMenuStrip1的右键菜单给挡住 了。。”,
我做了试验,根本没有出现你说的情况,鼠标一旦进入DataGridView里,它会优先处理针对它的所有鼠标事件,根本不会给其他窗体、系统机会的。
我试验是这样做的:
Form上拖一个DataGridView控件,在拖两个contextMenuStrip控件,
form1的ContextMenuStrip属性设置为contextMenuStrip1 ,
dataGridView1的ContextMenuStrip属性设置为contextMenuStrip2;
运行正常。
在同一窗体都没有这种现象,何况在一个系统里!
楼主,你是不是做了什么特殊处理,让系统截取鼠标邮件事件。
你可以先按我的方法测试一下,可能对你找问题有帮助。。。
------其他解决方案--------------------LZ你说的这个问题应该不会存在啊
就像楼上说的一样,
你最好截个图来看看
另外你的是不是在可编辑状态下 右键功能 是无效状态?
------其他解决方案--------------------前提是单元格处于编辑状态,确实会被系统的右击菜单给挡住。
如果不是编辑状态,是没有问题的。
楼主,你这个问题解决了吗?
------其他解决方案--------------------利用API拦截来处理,也还是不行。
#region 本程序中需声明的变量
private const int WM_RBUTTONDOWN = 0x0204;//该变量表示鼠标右键的信息
private const int WM_GETTEXT = 0x000d;//该变量表示从文本框中获取文本的信息
private const int WM_CONTEXTMENU = 0x007B;//该变量表示右键菜单的信息
#endregion
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_RBUTTONDOWN
------其他解决方案-------------------- m.Msg == WM_GETTEXT