gridcontrol的列头右键菜单问题
Posted 不为失败找借口,只为成功找方法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gridcontrol的列头右键菜单问题相关的知识,希望对你有一定的参考价值。
Dev控件GridControl设置了一个右键菜单 this.gridControl1.ContextMenu = contextMenu2; 而GridControl在运行排序的时候,即
gridview1->OptionsCustomization->AllowSort设为true时,控件自带一个英文的右键菜单如下
这样当点击表列头时,就会出现下面的两个右键菜单重叠问题。
这样当点击表列头时,就会出现下面的两个右键菜单重叠问题。
解决办法: privatevoid gridView1_MouseUp(object sender, MouseEventArgs e) { DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = this.gridView1.CalcHitInfo(e.Location); if (!hi.InRow && e.Button == MouseButtons.Right) { ContextMenu emptyMenu = newContextMenu(); this.gridControl1.ContextMenu = emptyMenu; } else { this.gridControl1.ContextMenu = contextMenu2; } } 下面是解决问题时的两篇参考文献: Dev控件屏蔽gridcontrol和buttonedit右键菜单 dev控件屏蔽gridcontrol和buttonedit右键菜单,有需要的朋友可以参考下。 DevExpress的很多控件都自带右键菜单,菜单风格又与控件本身差别很多,感觉极不协调,而且都是英文,这篇文章讲述如何屏蔽这些右键菜单。 1.gridcontrol的右键菜单 gridcontrol的右键菜单有两种,第一种是在表格列头右键弹出的菜单,第二种是点击表格列头边上的黑色“钉子”按钮弹出的菜单, 屏蔽它们只需修改属性即可:gridview1->OptionsCustomization->AllowFilter和gridview1->OptionsCustomization->AllowSort改为false 2.buttonEdit和pictureedit的右键菜单 buttonEdit以及pictureEdit的右键菜单无法通过直接设置属性屏蔽,想屏蔽它们需要两行代码: ContextMenu emptyMenu = new ContextMenu();buttonedit.Properties.ContextMenu = emptyMenu; 即自己定义一个空的右键菜单,赋给buttonedit。 Dev GirdView 去掉系统菜单增加自定义菜单 Dev GirdView 去掉系统菜单增加自定义菜单 1.获取gridview 事件如下: private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)//判断是否是列标题的右键菜单 { GridViewColumnMenu menu = e.Menu as GridViewColumnMenu; //menu.Items.RemoveAt(6);//移除右键菜单中的第7个功能,从0开始 menu.Items.Clear();//清除所有功能 string strDisp =自己需要增加的右键信息 DXMenuItem dxm = new DXMenuItem(); dxm.Caption = strDisp; menu.Items.Add(dxm); } } 2.红色标示第一行清除dev自带的右键系统菜单。 3.红色标示第二行增加自己定义的菜单,可以读取lst 或者datatable 数据集进行赋值。 4.声明DXMenuItem dxm = new DXMenuItem(); 5.赋值 dxm.Caption = strDisp; 6.增加自定义数据集 menu.Items.Add(dxm); 7.触发右键菜单 private void gridView1_MouseUp(object sender, MouseEventArgs e) { DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = this.gridView1.CalcHitInfo(e.Location); if (e.Button == MouseButtons.Right) { this.popupMenu1.ShowPopup(Control.MousePosition); } }
以上是关于gridcontrol的列头右键菜单问题的主要内容,如果未能解决你的问题,请参考以下文章
[DevExpress] GridControl添加右键菜单
为datagridtreegrid增加右键表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中