This example shows how to display a custom context menu when the user right-clicks on a data row.
Files to Review
Documentation
See Also
Example Code
FormGridMenu.cs(vb)
C#using DevExpress.Utils.Menu;
using DevExpress.XtraBars;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
namespace RowsPopupMenu {
public partial class FormGridMenu : DevExpress.XtraEditors.XtraForm {
public FormGridMenu() {
InitializeComponent();
}
private void Form1_Load(object sender, System.EventArgs e) {
new DevExpress.XtraGrid.Design.XViewsPrinting(gridControl1);
}
private void gridView1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) {
if (e.MenuType == GridMenuType.Row) {
popupMenu_Row.Tag = e.HitInfo;
e.ShowCustomMenu(popupMenu_Row);
}
}
GridHitInfo GetHitInfo(BarItemLink link) {
PopupMenu menu = link.LinkedObject as PopupMenu;
return menu.Tag as GridHitInfo;
}
private void barButtonItem_Edit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
GridHitInfo info = GetHitInfo(e.Link);
info?.View.ShowEditor();
}
private void barButtonItem_Delete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
GridHitInfo info = GetHitInfo(e.Link);
info.View.DeleteRow(info.View.FocusedRowHandle);
}
}
}
Visual BasicImports System
Imports DevExpress.XtraBars
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraGrid.Views.Grid.ViewInfo
Namespace RowsPopupMenu
Public Partial Class FormGridMenu
Inherits DevExpress.XtraEditors.XtraForm
Public Sub New()
InitializeComponent()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs)
Dim tmp_XViewsPrinting = New DevExpress.XtraGrid.Design.XViewsPrinting(gridControl1)
End Sub
Private Sub gridView1_PopupMenuShowing(sender As Object, e As PopupMenuShowingEventArgs)
If e.MenuType = GridMenuType.Row Then
popupMenu_Row.Tag = e.HitInfo
e.ShowCustomMenu(popupMenu_Row)
End If
End Sub
Private Function GetHitInfo(link As BarItemLink) As GridHitInfo
Dim menu As PopupMenu = TryCast(link.LinkedObject, PopupMenu)
Return TryCast(menu.Tag, GridHitInfo)
End Function
Private Sub barButtonItem_Edit_ItemClick(sender As Object, e As ItemClickEventArgs)
Dim info = GetHitInfo(e.Link)
info?.View.ShowEditor()
End Sub
Private Sub barButtonItem_Delete_ItemClick(sender As Object, e As ItemClickEventArgs)
Dim info = GetHitInfo(e.Link)
info.View.DeleteRow(info.View.FocusedRowHandle)
End Sub
End Class
End Namespace