DataGridView.RowContextMenuStripNeeded 事件


在需要行的快捷菜单时发生。Occurs when a row's shortcut menu is needed.

 event System::Windows::Forms::DataGridViewRowContextMenuStripNeededEventHandler ^ RowContextMenuStripNeeded;
public event System.Windows.Forms.DataGridViewRowContextMenuStripNeededEventHandler RowContextMenuStripNeeded;
member this.RowContextMenuStripNeeded : System.Windows.Forms.DataGridViewRowContextMenuStripNeededEventHandler 
Public Custom Event RowContextMenuStripNeeded As DataGridViewRowContextMenuStripNeededEventHandler 


下面的代码示例处理 RowContextMenuStripNeeded 事件,以根据雇员的头衔提供 ContextMenuStripThe 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.

void dataGridView1_RowContextMenuStripNeeded(object sender,
    DataGridViewRowContextMenuStripNeededEventArgs e)
    DataGridViewRow dataGridViewRow1 = dataGridView1.Rows[e.RowIndex];

    toolStripMenuItem1.Enabled = true;

    // Show the appropriate ContextMenuStrip based on the employees title.
    if ((dataGridViewRow1.Cells["Title"].Value.ToString() ==
        "Sales Manager") ||
        (dataGridViewRow1.Cells["Title"].Value.ToString() ==
        "Vice President, Sales"))
        e.ContextMenuStrip = managerMenuStrip;
        e.ContextMenuStrip = employeeMenuStrip;

    contextMenuRowIndex = e.RowIndex;
Public Sub dataGridView1_RowContextMenuStripNeeded( _
    ByVal sender As Object, _
    ByVal e As DataGridViewRowContextMenuStripNeededEventArgs) _
    Handles dataGridView1.RowContextMenuStripNeeded

    Dim dataGridViewRow1 As DataGridViewRow = _

    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
        e.ContextMenuStrip = employeeMenuStrip
    End If

    contextMenuRowIndex = e.RowIndex
End Sub


仅当设置了 DataGridView 控件 DataSource 属性或 trueVirtualMode 属性时,才会发生 RowContextMenuStripNeeded 事件。The RowContextMenuStripNeeded event occurs only when the DataGridView control DataSource property is set or its VirtualMode property is true. 当要显示由行的当前状态或它包含的值确定的快捷菜单时,处理 RowContextMenuStripNeeded 事件很有用。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.

处理 RowContextMenuStripNeeded 事件时,每当用户右键单击行时,就会显示您在处理程序中指定的快捷菜单,除非 CellContextMenuStripNeeded 覆盖所单击的特定单元格的快捷菜单。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.

只要按编程方式或用户右键单击行来检索 DataGridViewRow.ContextMenuStrip 属性的值,就会发生 RowContextMenuStripNeeded 事件。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.

您可以使用 DataGridViewRowContextMenuStripNeededEventArgs.RowIndex 属性来确定行的状态或它包含的值,并使用此信息来更改或修改 DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip 属性。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. 此属性用行 ContextMenuStrip 属性的值进行初始化,该属性的值将重写。This property is initialized with the value of the row ContextMenuStrip property, which the event value overrides.

处理大量数据时处理 RowContextMenuStripNeeded 事件,以避免将行 ContextMenuStrip 值设置为多个行的性能损失。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. 有关详细信息,请参阅 缩放 Windows 窗体 DataGridView 控件的最佳做法For more information, see Best Practices for Scaling the Windows Forms DataGridView Control.

有关如何处理事件的详细信息,请参阅处理和引发事件For more information about how to handle events, see Handling and Raising Events.