3

有谁知道当用户右键单击 DataGridViewTextBoxCell 时如何禁用系统上下文菜单?我试图在 DataGridView 级别覆盖 WndProc(因为在 Cell 级别上没有要覆盖的 WndProc),但似乎没有任何效果。任何帮助将不胜感激。

以下是我在常规 TextBox 中用来实现此目的的方法,但是,我需要为 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);
        }
    }
}
4

1 回答 1

8

这对我有用:

   private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        e.Control.ContextMenu = new ContextMenu();
    }

只需在 DataGridView 的 EditingControlShowing 事件中将 ContextMenu 属性设置为新的(空)ContextMenu。

于 2008-11-05T23:56:58.420 回答