DataGridView.RowContextMenuStripNeeded 事件

定义

在需要行的快捷菜单时发生。

public:
 event System::Windows::Forms::DataGridViewRowContextMenuStripNeededEventHandler ^ RowContextMenuStripNeeded;
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 。 在此示例中,有两个快捷菜单,一个用于经理,另一个用于所有其他员工。

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仅当设置了控件DataSource属性或其 VirtualMode 属性为 trueDataGridView,才会发生该事件。 如果要显示由行的 RowContextMenuStripNeeded 当前状态或其包含的值确定的快捷菜单,处理事件非常有用。

处理 RowContextMenuStripNeeded 事件时,每当用户右键单击某一行时,都将显示处理程序中指定的快捷菜单, CellContextMenuStripNeeded 除非 覆盖所单击的特定单元格的快捷菜单。

RowContextMenuStripNeeded每当以编程方式或用户右键单击行时检索属性的值DataGridViewRow.ContextMenuStrip时,也会发生 该事件。

可以使用 DataGridViewRowContextMenuStripNeededEventArgs.RowIndex 属性来确定行的状态或其包含的值,并使用此信息更改或修改属性 DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip 。 此属性使用事件值替代的行 ContextMenuStrip 属性的值初始化。

RowContextMenuStripNeeded处理大量数据时处理 事件,以避免为多行设置行ContextMenuStrip值而造成性能损失。 有关详细信息,请参阅 缩放 Windows 窗体 DataGridView 控件的最佳做法

有关如何处理事件的详细信息,请参阅 处理和引发事件

适用于

另请参阅