将行特定上下文菜单添加到UltraWinGrid

时间:2011-04-21 20:50:06

标签: row contextmenu ultrawingrid

我是使用Infragistics的新手。我正在尝试将上下文菜单添加到UltraWinGrid中的特定行/列,这是我无法做到的。看起来像向网格添加上下文菜单很简单,但将其添加到特定的行/列并不是直截了当的。你能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:3)

您可以向表单或控件中添加一个上下文菜单,只有当他们在需要该菜单的行/单元格上的网格中单击时,才会显示该网格。

这是一个例子,虽然它并不漂亮。

private void UltraGrid_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
{
  if (e.Button == MouseButtons.Right) 
  {
    ContextMenu.Hide();

    Point point = new System.Drawing.Point(e.X, e.Y);
    UIElement uiElement = ((UltraGridBase) sender).DisplayLayout.UIElement.ElementFromPoint(point);
    UltraGridCell cell = (UltraGridCell) uiElement.GetContext(typeof (UltraGridCell));  

    if (cell != null && UseThisContextMenu(cell))
    {
      ContextMenu.Show();
    }
  }
}

答案 1 :(得分:0)

MouseDown不起作用。请使用MouseUp。

private void UltraGrid1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {

            Point point = new System.Drawing.Point(e.X, e.Y);
            UIElement uiElement = ((UltraGridBase)sender).DisplayLayout.UIElement.ElementFromPoint(point);
            UltraGridCell cell = (UltraGridCell)uiElement.GetContext(typeof(UltraGridCell));

            if (cell.Band.Index == 0)
            {
                if (cell.Column.Key.Equals("ColumnToShow"))
                {
                    contextMenuStrip.Show();
                }
                else
                {
                    contextMenuStrip.Hide();
                }

            }
        }
    }
}