DataGridView.RowContextMenuStripNeeded 事件

定义

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

C#
public event System.Windows.Forms.DataGridViewRowContextMenuStripNeededEventHandler RowContextMenuStripNeeded;
C#
public event System.Windows.Forms.DataGridViewRowContextMenuStripNeededEventHandler? RowContextMenuStripNeeded;

事件类型

示例

下面的代码示例处理 事件, RowContextMenuStripNeeded 以基于员工的职务提供 ContextMenuStrip 。 在此示例中,有两个快捷菜单,一个用于经理,另一个用于所有其他员工。

C#
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;
}

注解

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

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

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

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

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

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

适用于

产品 版本
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另请参阅