Rechtsklick-Kontext-Popup-Menü im DevExpress-WinForms-XtraGrid anzeigen

Um bei einem Windows-Forms-Grid von DevExpress ein Kontextmenü anzuzeigen, wenn der Benutzer per rechter Maustaste auf eine Zelle/Zeile im Grid klickt, wie folgt vorgehen:

  1. Im Windows-Forms-Designer ein Popup-Menü hinzufügen (samt BarManager) und diesem dort Menüeinträge hinzufügen.
  2. Nachfolgenden Code zum Behandeln des PopupMenuShowing-Ereignisses ergänzen.
private void itemsGridView_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
{
    var view = (GridView)sender;
    var hitInfo = view.CalcHitInfo(e.Point);

    if (hitInfo.InRow)
    {
        XtraGridExtensionMethods.SafeSelectSingleRow(view, hitInfo.RowHandle);
        popupMenu.ShowPopup(MousePosition);
    }
}

Die Methode SafeSelectSingleRow ist eine Hilfsmethode von mir, die sicherstellt, dass die Zeile, auf die geklickt wurde, auch gleich ausgewählt wird:

public static void SafeSelectSingleRow(GridView gridView, int rowHandle)
{
	gridView.FocusedRowHandle = rowHandle;
	gridView.SelectRow(rowHandle);
}

Siehe dazu auch den Eintrag im DevExpress-Knowledge-Base-Artikel „T198000 - Show popup menu on grid“.