如何保持devexpress上的默认列标题弹出菜单?

时间:2015-03-25 15:47:01

标签: c# devexpress

我在网格内容上添加了右键单击弹出菜单。当我右键单击网格标题时,此弹出窗口也显示,但是,我想保留默认列标题弹出菜单。

我的右侧菜单代码如下:

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;
}

有没有人知道我应该在代码中添加什么内容?

2 个答案:

答案 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;
}