右键单击时,上下文菜单显示在空白区域以及Ultra网格标题上

时间:2012-10-04 17:09:56

标签: c# contextmenu infragistics ultragrid

右键单击Ultragrid(Infragistics)的空白部分或C#上下文菜单中的标题会出现,并且不执行任何操作。如果点击落在一行上,我怎么才能显示上下文菜单?

所以我正在开发一个项目,我有一个超网格,我在其中放置一个上下文菜单,当有人在网格中右键单击菜单出现(删除)时。但是当右键单击时,上下文菜单会出现在空白区域以及Ultra网格标题上,并且我希望当单击落在一行上时它会出现。

1 个答案:

答案 0 :(得分:3)

这需要在您的环境中进行测试,但我认为它可以工作 诀窍在于使用MouseDown事件检查鼠标位置下的单元格(如果有的话),并且仅当我们在测试IsDataRow属性的DataRow单元上时才分配ContextMenu。

private void grid_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
    UltraGridCell currentCell = null;
    grid.ContextMenu = null;

    if (e.Button == MouseButtons.Right)
    {
        Point ulPoint = new Point(e.X, e.Y);
        UIElement el = grid.DisplayLayout.UIElement.ElementFromPoint(ulPoint); 
        if (el != null)
            currentcell = (UltraGridCell)el.GetContext(typeof(UltraGridCell)); 
        if (currentcell != null && currentCell.Row.IsDataRow == true)
        {
            grid.ActiveCell = currentcell;
            grid.ContextMenu = menuPopup;
        }
    }
}