如何从我的 gridview 中删除 devexpress 右键单击​​菜单?

How to remove devexpress right-click menu from my gridview?

我不要这个菜单。如何删除它?我应该使用哪个 属性?

看看这里: https://www.devexpress.com/Support/Center/Question/Details/Q313321

要隐藏列菜单,请将 GridView.OptionsMenu.EnableColumnMenu 属性 设置为 false

您显示的图像是一般上下文菜单(不是列菜单),默认情况下它会自行显示。如果你不想出现,你必须分配一个空的上下文菜单。

gridControl.ContextMenuStrip = new ContextMenuStrip ();
...
textBox.Properties.ContextMenuStrip = new ContextMenuStrip ();

您图片中的菜单实际上是编辑器的上下文菜单。编辑器是在您开始编辑单元格时创建的。此外,您只能从 TextEdit 及其后代中看到此菜单。 TextEdit 本身是容器,其中包含 System.Windows.Forms.TextBox 后代。默认情况下,TextEdit 阻止 TextBox 上下文菜单并显示它自己的。但是,如果 TextEdit.ContextMenuTextEdit.ContextMenuStrip 属性的值不为空,则显示此属性的菜单而不是默认菜单。因此,从技术上讲,如果您创建空 ContextMenuContextMenuStrip 并通过此菜单更新属性,则不会显示任何菜单。

您可以使用 GridView.ActiveEditor property to get the current editor and you can use GridView.ShownEditor 事件来更新当前编辑器上下文菜单。
这是示例:

private void gridView1_ShownEditor(object sender, EventArgs e)
{
    var view = (GridView)sender;
    var editor = view.ActiveEditor as TextEdit;

    if (editor == null)
        return;

    editor.ContextMenuStrip = new ContextMenuStrip();
}

使用 GridColumn.RealColumnEdit property. Cast it to RepositoryItemTextEdit and than handle its RepositoryItemTextEdit.BeforeShowMenu 事件获取列中使用的编辑器。在事件处理程序中清除菜单中的所有项目。这将阻止显示菜单。

RepositoryItemTextEdit rep = gridView1.Columns["your field name"].RealColumnEdit as RepositoryItemTextEdit;
rep.BeforeShowMenu += rep_BeforeShowMenu;

void rep_BeforeShowMenu(object sender, DevExpress.XtraEditors.Controls.BeforeShowMenuEventArgs e) {
    e.Menu.Items.Clear();
}

已编辑: 如果您需要为所有列禁用该菜单并因此禁用所有单元格,您可以遍历所有列而不是获取单个列:

foreach(var col in gridView1.Columns) {
    RepositoryItemTextEdit rep = col.RealColumnEdit as RepositoryItemTextEdit;
    rep.BeforeShowMenu += rep_BeforeShowMenu;
}