右键单击 Ultragrid (Infragistics) 的空白部分或 C# 上下文菜单中的标题出现并且不执行任何操作。当点击落在一行上时,如何只显示上下文菜单?
所以我正在做一个项目,我有一个超网格,我在里面放了一个上下文菜单,当有人在网格中右键单击时,菜单就会出现(删除)。但是右键单击时,上下文菜单会出现在空白区域以及 Ultra 网格标题上,我希望它在单击落在一行上时出现。
右键单击 Ultragrid (Infragistics) 的空白部分或 C# 上下文菜单中的标题出现并且不执行任何操作。当点击落在一行上时,如何只显示上下文菜单?
所以我正在做一个项目,我有一个超网格,我在里面放了一个上下文菜单,当有人在网格中右键单击时,菜单就会出现(删除)。但是右键单击时,上下文菜单会出现在空白区域以及 Ultra 网格标题上,我希望它在单击落在一行上时出现。
这需要在您的环境中进行测试,但我认为它可以工作。
诀窍在于使用 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;
}
}
}