【C#】【DevExpress】自定义单元格右键菜单,去除单元格编辑时,载入系统的默认菜单

使用GridView,自定义单元格的右击菜单,可以通过监听事件PopupMenuShowing,实现新增菜单。

 1 private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)
 2 {
 3     GridView view = sender as GridView;
 4     if (view == null) return;
 5 
 6     // 获取当前编辑状态下的单元格
 7     //判断单元格是否处于编辑状态
 8     if(!e.HitInfo.InColumn)
 9     {
10         DXMenuItem newMenuItem = new DXMenuItem();
11         newMenuItem.Caption = "新的菜单项";
12         newMenuItem.Click += customMenuItem_Click;
13         e.Menu.Items.Add(newMenuItem);
14     }
15 }

这里的customMenuItem_Click是自定义的单击事件。

 

运行后,右击单元格单元格如下所示:

 但是,这也有一个问题。当单元格处于编辑状态时,显示的还是系统默认的右击菜单栏。

 我们能不能修改编辑状态下的默认菜单栏?因为我们无法直接屏蔽,菜单栏。我们可以通过调取单元格编辑器事件,新建一个菜单项(如果不需要,怎不给这个菜单项增加任何item)。

 1 private void gridView1_ShownEditor(object sender, EventArgs e)
 2 {
 3     BaseEdit activeEditor = gridView1.ActiveEditor;
 4     if (activeEditor != null)
 5     {
 6         if (activeEditor is TextEdit)
 7         {
 8             ContextMenu enptyMen = new ContextMenu();
 9             MenuItem item = new MenuItem();
10             item.Text = "新的菜单项";
11             item.Name = "test";
12             item.Click += customMenuItem_Click;
13             enptyMen.MenuItems.Add(item);
14             activeEditor.Properties.ContextMenu = enptyMen;
15         }
16     }
17 }

这样,编辑状态下右击,就能是我吗自定义的菜单了。

posted @ 2024-10-21 15:21  陆陆无为而治者  阅读(33)  评论(0编辑  收藏  举报