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

问题描述 投票:0回答:5

enter image description here

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

.net gridview menu devexpress right-click
5个回答
4
投票

图片中的菜单实际上是编辑器的上下文菜单。当您开始编辑单元格时,将创建编辑器。此外,您只能从

TextEdit
及其后代中看到此菜单。
TextEdit
本身是容纳
System.Windows.Forms.TextBox
后代的容器。默认情况下,
TextEdit
会阻止
TextBox
上下文菜单并显示其自己的菜单。但是,如果
TextEdit.ContextMenu
TextEdit.ContextMenuStrip
属性的值不为空,则显示该属性的菜单而不是默认菜单。因此,从技术上讲,如果您创建空的
ContextMenu
ContextMenuStrip
并通过此菜单更新属性,则不会显示任何菜单。

您可以使用

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();
}

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;
}

0
投票

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

要隐藏列菜单,请将

GridView.OptionsMenu.EnableColumnMenu
属性设置为
false


0
投票

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

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

0
投票
  1. 在表单中添加PopupMenu

  2. 创建 GridView_TO_PopupMenuShowing 事件

  3. 将此代码添加到创建的事件

    如果 e.MenuType = GridMenuType.Column 那么 e.显示自定义菜单(PopupMenu1) 结束如果

© www.soinside.com 2019 - 2024. All rights reserved.