DataGridView.RowContextMenuStripNeeded DataGridView.RowContextMenuStripNeeded DataGridView.RowContextMenuStripNeeded DataGridView.RowContextMenuStripNeeded Event

定义

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

public:
 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事件,以便提供ContextMenuStrip基于员工的标题。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.

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;
    }
    else
    {
        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 = _
    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

注解

RowContextMenuStripNeeded事件时才会发生时DataGridView控制DataSource属性设置或其VirtualMode属性是trueThe 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.

RowContextMenuStripNeeded时也会发生事件的值DataGridViewRow.ContextMenuStrip检索属性,或者以编程方式或当用户右键单击某一行。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.

适用于

另请参阅