Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁用DataGridView系统上下文菜单_C#_.net_Winforms_Datagridview - Fatal编程技术网

C# 禁用DataGridView系统上下文菜单

C# 禁用DataGridView系统上下文菜单,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,有人知道当用户右键单击DataGridViewTextBoxCell时如何禁用系统上下文菜单吗?我尝试在DataGridView级别重写WndProc(因为在单元格级别上没有WndProc可重写),但似乎没有任何效果。任何帮助都将不胜感激 下面是我在常规文本框中实现这一点的方法,但是,我需要用同样的方法处理DataGridViewCell public class NoContextTextBox : TextBox { private static readonly int WM_C

有人知道当用户右键单击DataGridViewTextBoxCell时如何禁用系统上下文菜单吗?我尝试在DataGridView级别重写WndProc(因为在单元格级别上没有WndProc可重写),但似乎没有任何效果。任何帮助都将不胜感激

下面是我在常规文本框中实现这一点的方法,但是,我需要用同样的方法处理DataGridViewCell

public  class NoContextTextBox : TextBox {
    private static readonly int WM_CONTEXTMENU = 123;
    protected override void WndProc(ref Message m) {
        if (m.Msg != WM_CONTEXTMENU) {
            base.WndProc(ref m);
        }
    }
}
这对我很有用:

   private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        e.Control.ContextMenu = new ContextMenu();
    }
只需在DataGridView的EditingControlShowing事件中将ContextMenu属性设置为new(empty)ContextMenu