DataGridView.RowContextMenuStripNeeded Event
Assembly: System.Windows.Forms (in system.windows.forms.dll)
'Declaration Public Event RowContextMenuStripNeeded As DataGridViewRowContextMenuStripNeededEventHandler 'Usage Dim instance As DataGridView Dim handler As DataGridViewRowContextMenuStripNeededEventHandler AddHandler instance.RowContextMenuStripNeeded, handler
/** @event */ public void add_RowContextMenuStripNeeded (DataGridViewRowContextMenuStripNeededEventHandler value) /** @event */ public void remove_RowContextMenuStripNeeded (DataGridViewRowContextMenuStripNeededEventHandler value)
JScript supports the use of events, but not the declaration of new ones.
The RowContextMenuStripNeeded event occurs only when the DataGridView control DataSource property is set or its VirtualMode property is true. Handling the RowContextMenuStripNeeded event is useful when you want to display a shortcut menu determined by a row's current state or the values it contains.
When you handle the RowContextMenuStripNeeded event, the shortcut menu that you specify in the handler is shown whenever the user right-clicks a row unless the CellContextMenuStripNeeded overrides the shortcut menu for the specific cell that was clicked.
The RowContextMenuStripNeeded event also occurs whenever the value of the DataGridViewRow.ContextMenuStrip property is retrieved, either programmatically or when the user right-clicks a row.
You can use the DataGridViewRowContextMenuStripNeededEventArgs.RowIndex property to determine the state of a row or the values it contains, and use this information to change or modify the DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip property. This property is initialized with the value of the row ContextMenuStrip property, which the event value overrides.
Handle the RowContextMenuStripNeeded event when working with large amounts of data to avoid the performance penalties of setting the row ContextMenuStrip value for multiple rows. For more information, see Best Practices for Scaling the Windows Forms DataGridView Control.
For more information about handling events, see Consuming Events.
The following code example handles the RowContextMenuStripNeeded event to provide a ContextMenuStrip based on the title of the employee. In this example, there are two shortcut menus, one for managers and one for all other employees.
Public Sub dataGridView1_RowContextMenuStripNeeded( _ ByVal sender As Object, _ ByVal e As DataGridViewRowContextMenuStripNeededEventArgs) _ Handles dataGridView1.RowContextMenuStripNeeded Dim dataGridViewRow1 As DataGridViewRow = _ dataGridView1.Rows(e.RowIndex) toolStripMenuItem1.Enabled = True ' Show the appropriate ContextMenuStrip based on the employees title. If dataGridViewRow1.Cells("Title").Value.ToString() = _ "Sales Manager" OrElse _ dataGridViewRow1.Cells("Title").Value.ToString() = _ "Vice President, Sales" Then e.ContextMenuStrip = managerMenuStrip Else e.ContextMenuStrip = employeeMenuStrip End If contextMenuRowIndex = e.RowIndex End Sub
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.
Reference
DataGridView ClassDataGridView Members
System.Windows.Forms Namespace
ContextMenuStrip Class
DataGridView.DataSource Property
DataGridView.VirtualMode Property
DataGridViewRowContextMenuStripNeededEventHandler
DataGridViewRowContextMenuStripNeededEventArgs
DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip
DataGridViewRow.ContextMenuStrip
OnRowContextMenuStripNeeded