【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 }
这样,编辑状态下右击,就能是我吗自定义的菜单了。
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。