图片中的菜单实际上是编辑器的上下文菜单。当您开始编辑单元格时,将创建编辑器。此外,您只能从
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();
}
使用 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;
}
看这里: https://www.devexpress.com/Support/Center/Question/Details/Q313321
要隐藏列菜单,请将
GridView.OptionsMenu.EnableColumnMenu
属性设置为 false
。
您显示的图像是一般上下文菜单(不是列菜单),默认情况下它会显示自身。如果你不想出现,你必须分配一个空的上下文菜单。
gridControl.ContextMenuStrip = new ContextMenuStrip ();
...
textBox.Properties.ContextMenuStrip = new ContextMenuStrip ();
在表单中添加PopupMenu
创建 GridView_TO_PopupMenuShowing 事件
将此代码添加到创建的事件
如果 e.MenuType = GridMenuType.Column 那么 e.显示自定义菜单(PopupMenu1) 结束如果