我在网格内容上添加了右键单击弹出菜单。当我右键单击网格标题时,此弹出窗口也显示,但是,我想保留默认列标题弹出菜单。
我的右侧菜单代码如下:
protected override void RightClickMenu()
{
this.rightClickContextMenu = new ContextMenu();
this.rightClickContextMenu.MenuItems.Add("MY CLASSES", new System.EventHandler(myclasses_Click));
this.rightClickContextMenu.MenuItems.Add("MY BOOK LISTS", new System.EventHandler(booklists_Click));
this.gridView.PopupMenuShowing += gridView_PopupMenuShowing;
}
有没有人知道我应该在代码中添加什么内容?
答案 0 :(得分:0)
如果不了解这种情况的所有方面,很难提出建议。您应report this issue直接与DevExpress支持团队联系,并提供可重现问题的示例项目。我相信他们的人可以使用您的示例诊断错误并修复它,或者使用GridControl上的ContextMenu用法指向正确的方向。
相关支持文章:Both ContextMenu and grid menu are shown simultaneously
答案 1 :(得分:0)
您可以使用GridView.CalcHitInfo
方法确定单击鼠标右键的位置。如果点击了列标题,则必须将GridControl.ContextMenu
属性设置为null
这是一个例子:
protected override void RightClickMenu()
{
this.rightClickContextMenu = new ContextMenu();
this.rightClickContextMenu.MenuItems.Add("MY CLASSES", new System.EventHandler(myclasses_Click));
this.rightClickContextMenu.MenuItems.Add("MY BOOK LISTS", new System.EventHandler(booklists_Click));
this.gridView.PopupMenuShowing += gridView_PopupMenuShowing;
this.gridView.MouseDown += gridView_MouseDown;
}
private void gridView_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Right)
return;
var hitInfo = this.gridView.CalcHitInfo(e.Location);
if (!hitInfo.InColumn)
this.gridView.GridControl.ContextMenu = this.rightClickContextMenu;
else
this.gridView.GridControl.ContextMenu = null;
}