Click here to Skip to main content
12,767,468 members (45,132 online)
Click here to Skip to main content
Add your own
alternative version


4 bookmarked
Posted 29 Jun 2011

Apps Key in DevExpress GridControl

, 29 Jun 2011 CPOL
Rate this:
Please Sign up or sign in to vote.
Display of a context menu when pressing the Apps key in a DevExpress GridControl
Apps key in DevExpress GridControl


In Windows, context menus are displayed either by right-clicking on the mouse, or by pressing the Apps key on the keyboard. This post describes how to implement the same functionality on a DevExpress GridControl.


The Apps key is usually to the left of the right Ctrl button on the keyboard.

Using the Code

Compile the project and run it. Set in the Input folder field a folder which contains some files. When pressing the Get files button, the grid is populated with the list of files of that folder. When pressing the Apps key on a selected row, the context menu appears. The context menu is displayed by the code:

Public Delegate Sub ContextMenuShow(ByVal v As GridView, ByVal pt As System.Drawing.Point)

Protected Overridable Sub ContextGridMenuShow_
	(ByVal v As GridView, ByVal pt As System.Drawing.Point)
    ContextMenuStrip1.Show(v.GridControl, pt)
End Sub

Private Shared Sub View_KeyDown( _
    ByVal v As GridView, ByVal e As KeyEventArgs, ByVal f As ContextMenuShow)
    If e.KeyCode = Keys.Apps Then
        If v.FocusedRowHandle > -1 Then
            Dim col As DevExpress.XtraGrid.Columns.GridColumn = v.FocusedColumn
            Dim gvi As ViewInfo.GridViewInfo = col.View.GetViewInfo()
            Dim rvi As ViewInfo.GridDataRowInfo = _
            gvi.RowsInfo(v.FocusedRowHandle - gvi.RowsLoadInfo.TopVisibleRowIndex)
            Dim i As Integer = _
            IIf(col.VisibleIndex < rvi.Cells.Count - 1, col.VisibleIndex + 1, 1)
            Dim rect As System.Drawing.Rectangle = rvi.Cells(i).Bounds
            If Not rect.IsEmpty Then
                Dim pt As System.Drawing.Point = rect.Location : pt.Offset(20, 10)
                f(v, pt)
            End If
        End If
    End If
End Sub

Protected Overridable Sub GridView1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles GridView1.KeyDown
    If e.KeyCode = Keys.Enter Then
    End If
    View_KeyDown(sender, e, AddressOf ContextGridMenuShow)
End Sub

The View_KeyDown method checks if the Apps key was pressed. If it was, and a row on the grid is focused, it gets the focused column. The visible row is retrieved through v.FocusedRowHandle - gvi.RowsLoadInfo.TopVisibleRowIndex, because the grid may have been scrolled. The cell next to the focused column is taken, or the second cell is taken if the focused column is larger than the displayed columns. For this cell, the bounds are taken and a point with an offset of 20 and 10 from the upper left corner is taken. For that point, a function is called that displays the context menu at that point (ContextGridMenuShow).

Points of Interest

This project also shows how a detail form may be displayed when double-clicking or pressing Enter on a row.


  • 28th June, 2011: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Alexandros Pappas
Software Developer (Senior) Alpha Bank SA
Greece Greece
No Biography provided

You may also be interested in...


Comments and Discussions

-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.170217.1 | Last Updated 29 Jun 2011
Article Copyright 2011 by Alexandros Pappas
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid