DataGridViewRowContextMenuStripNeededEventHandler 委托


表示将用来处理 RowContextMenuStripNeededDataGridView 事件的方法。Represents the method that will handle the RowContextMenuStripNeeded event of a DataGridView.

public delegate void DataGridViewRowContextMenuStripNeededEventHandler(System::Object ^ sender, DataGridViewRowContextMenuStripNeededEventArgs ^ e);
public delegate void DataGridViewRowContextMenuStripNeededEventHandler(object sender, DataGridViewRowContextMenuStripNeededEventArgs e);
type DataGridViewRowContextMenuStripNeededEventHandler = delegate of obj * DataGridViewRowContextMenuStripNeededEventArgs -> unit
Public Delegate Sub DataGridViewRowContextMenuStripNeededEventHandler(sender As Object, e As DataGridViewRowContextMenuStripNeededEventArgs)



事件源。The source of the event.



在下面的代码示例中, RowContextMenuStripNeeded将对事件进行处理以ContextMenuStrip基于员工的标题提供。In the following code example, the RowContextMenuStripNeeded event is handled to provide a ContextMenuStrip based on the title of the employee. 在此示例中, 有两个上下文菜单, 一个用于经理, 另一个用于所有其他员工。In this example, two there are two context 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


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.

创建 DataGridViewRowContextMenuStripNeededEventHandler 委托时,需要标识将处理该事件的方法。When you create a DataGridViewRowContextMenuStripNeededEventHandler delegate, you identify the method that will handle the event. 若要将事件与事件处理程序关联,请将该委托的一个实例添加到事件中。To associate the event with your event handler, add an instance of the delegate to the event. 除非移除了该委托,否则每当发生该事件时就会调用事件处理程序。The event handler is called whenever the event occurs, unless you remove the delegate. 有关事件处理程序委托的详细信息, 请参阅处理和引发事件For more information about event-handler delegates, see Handling and Raising Events.



获取指示指定委托表示的方法的对象。Gets an object that represents the method represented by the specified delegate.