首页 > 代码库 > gridcontrol的列头右键菜单问题

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的列头右键菜单问题