Добавление специфического для строки контекстного меню в UltraWinGrid - PullRequest
0 голосов
/ 22 апреля 2011

Я новичок, использующий Infragistics. Я пытаюсь добавить контекстное меню к определенной строке / столбцу в UltraWinGrid, что я не могу. Похоже, что добавить контекстное меню в сетку просто, но добавить его в конкретную строку / столбец не так просто. Подскажите, пожалуйста, как это сделать?

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Вы можете добавить контекстное меню в форму или управлять вашей сеткой и отображать ее только тогда, когда они щелкают правой кнопкой мыши в сетке над строками / ячейками, которым необходимо это меню.

Вот пример, хотя это не красиво.

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();
    }
  }
}
0 голосов
/ 18 мая 2016

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

            }
        }
    }
}
...