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:
- Im Windows-Forms-Designer ein Popup-Menü hinzufügen (samt BarManager) und diesem dort Menüeinträge hinzufügen.
- 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“.