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

处理大量数据时处理ContextMenuStrip 事件,以避免设置多行的行值时的性能损失。RowContextMenuStripNeededHandle 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.

适用于

另请参阅