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

grid
menu
devexpress
Tags: #<Tag:0x00007f9ae087d048> #<Tag:0x00007f9ae087cd78> #<Tag:0x00007f9ae087caf8>

#1

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”.