DataGridViewRowContextMenuStripNeededEventHandler 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示将用来处理 RowContextMenuStripNeeded 的 DataGridView 事件的方法。
public delegate void DataGridViewRowContextMenuStripNeededEventHandler(System::Object ^ sender, DataGridViewRowContextMenuStripNeededEventArgs ^ e);
public delegate void DataGridViewRowContextMenuStripNeededEventHandler(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
事件源。
示例
在下面的代码示例中 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 属性为 true
时DataGridView,才会发生该事件。 如果要显示由行的 RowContextMenuStripNeeded 当前状态或其包含的值确定的快捷菜单,处理事件非常有用。
处理 RowContextMenuStripNeeded 事件时,每当用户右键单击某一行时,都将显示处理程序中指定的快捷菜单, CellContextMenuStripNeeded 除非 覆盖所单击的特定单元格的快捷菜单。
RowContextMenuStripNeeded每当以编程方式或用户右键单击行时检索属性的值DataGridViewRow.ContextMenuStrip时,也会发生 该事件。
可以使用 DataGridViewRowContextMenuStripNeededEventArgs.RowIndex 属性来确定行的状态或其包含的值,并使用此信息更改或修改属性 DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip 。 此属性使用事件值替代的行 ContextMenuStrip 属性的值初始化。
RowContextMenuStripNeeded处理大量数据时处理 事件,以避免为多行设置行ContextMenuStrip值而造成性能损失。 有关详细信息,请参阅 缩放 Windows 窗体 DataGridView 控件的最佳做法。
有关如何处理事件的详细信息,请参阅 处理和引发事件。
创建 DataGridViewRowContextMenuStripNeededEventHandler 委托时,需要标识将处理该事件的方法。 若要将事件与事件处理程序关联,请将该委托的一个实例添加到事件中。 除非移除了该委托,否则每当发生该事件时就会调用事件处理程序。 有关事件处理程序委托的详细信息,请参阅 处理和引发事件。
扩展方法
GetMethodInfo(Delegate) |
获取指示指定委托表示的方法的对象。 |