DataGridViewRowContextMenuStripNeededEventHandler DataGridViewRowContextMenuStripNeededEventHandler DataGridViewRowContextMenuStripNeededEventHandler DataGridViewRowContextMenuStripNeededEventHandler Delegate

定义

表示将用来处理 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)

参数

sender
Object Object Object Object

事件源。The source of the event.

继承
DataGridViewRowContextMenuStripNeededEventHandlerDataGridViewRowContextMenuStripNeededEventHandlerDataGridViewRowContextMenuStripNeededEventHandlerDataGridViewRowContextMenuStripNeededEventHandler

示例

在下面的代码示例中,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;
    }
    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.

创建 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.

扩展方法

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

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

适用于

另请参阅