如何从gridview中删除devexpress右键菜单?

时间:2016-01-26 07:40:22

标签: .net gridview menu devexpress right-click

enter image description here

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

4 个答案:

答案 0 :(得分:4)

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

您可以使用GridView.ActiveEditor属性获取当前编辑器,并可以使用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();
}

答案 1 :(得分:2)

使用GridColumn.RealColumnEdit属性获取列中使用的编辑器。将其转换为RepositoryItemTextEdit,然后处理其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;
}

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您显示的图像是一般的contextMenu(不是列菜单),默认情况下会显示自己。如果您不想显示,则必须指定一个空的上下文菜单。

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