DataGridViewRow.ContextMenuStrip 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置行的快捷菜单。
public:
virtual property System::Windows::Forms::ContextMenuStrip ^ ContextMenuStrip { System::Windows::Forms::ContextMenuStrip ^ get(); void set(System::Windows::Forms::ContextMenuStrip ^ value); };
public override System.Windows.Forms.ContextMenuStrip ContextMenuStrip { get; set; }
public override System.Windows.Forms.ContextMenuStrip? ContextMenuStrip { get; set; }
member this.ContextMenuStrip : System.Windows.Forms.ContextMenuStrip with get, set
Public Overrides Property ContextMenuStrip As ContextMenuStrip
属性值
与当前 ContextMenuStrip 关联的 DataGridViewRow。 默认值为 null
。
例外
在获取此属性的值时,行位于 DataGridView 控件中,并且是共享行。
示例
下面的代码示例演示如何使用 DataGridViewColumn.ContextMenuStrip 属性,该属性几乎与 类的 DataGridViewRow 属性相同ContextMenuStrip。 此代码示例是 类中提供的更大代码示例的 DataGridViewColumn 一部分。
ToolStripMenuItem^ toolStripItem1;
void AddContextMenu()
{
toolStripItem1->Text = L"Redden";
toolStripItem1->Click += gcnew EventHandler( this, &DataGridViewColumnDemo::toolStripItem1_Click );
System::Windows::Forms::ContextMenuStrip^ strip = gcnew System::Windows::Forms::ContextMenuStrip;
IEnumerator^ myEnum = dataGridView->Columns->GetEnumerator();
while ( myEnum->MoveNext() )
{
DataGridViewColumn^ column = safe_cast<DataGridViewColumn^>(myEnum->Current);
column->ContextMenuStrip = strip;
column->ContextMenuStrip->Items->Add( toolStripItem1 );
}
}
DataGridViewCellEventArgs^ mouseLocation;
// Change the cell's color.
void toolStripItem1_Click( Object^ /*sender*/, EventArgs^ /*args*/ )
{
dataGridView->Rows[ mouseLocation->RowIndex ]->Cells[ mouseLocation->ColumnIndex ]->Style->BackColor = Color::Red;
}
// Deal with hovering over a cell.
void dataGridView_CellMouseEnter( Object^ /*sender*/, DataGridViewCellEventArgs^ location )
{
mouseLocation = location;
}
ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem();
private void AddContextMenu()
{
toolStripItem1.Text = "Redden";
toolStripItem1.Click += new EventHandler(toolStripItem1_Click);
ContextMenuStrip strip = new ContextMenuStrip();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.ContextMenuStrip = strip;
column.ContextMenuStrip.Items.Add(toolStripItem1);
}
}
private DataGridViewCellEventArgs mouseLocation;
// Change the cell's color.
private void toolStripItem1_Click(object sender, EventArgs args)
{
dataGridView.Rows[mouseLocation.RowIndex]
.Cells[mouseLocation.ColumnIndex].Style.BackColor
= Color.Red;
}
// Deal with hovering over a cell.
private void dataGridView_CellMouseEnter(object sender,
DataGridViewCellEventArgs location)
{
mouseLocation = location;
}
WithEvents toolStripItem1 As New ToolStripMenuItem()
Private Sub AddContextMenu()
toolStripItem1.Text = "Redden"
Dim strip As New ContextMenuStrip()
For Each column As DataGridViewColumn _
In dataGridView.Columns()
column.ContextMenuStrip = strip
column.ContextMenuStrip.Items.Add(toolStripItem1)
Next
End Sub
' Change the cell's color.
Private Sub toolStripItem1_Click(ByVal sender As Object, _
ByVal args As EventArgs) _
Handles toolStripItem1.Click
dataGridView.Rows(mouseLocation.RowIndex) _
.Cells(mouseLocation.ColumnIndex) _
.Style.BackColor = Color.Red
End Sub
Private mouseLocation As DataGridViewCellEventArgs
' Deal with hovering over a cell.
Private Sub dataGridView_CellMouseEnter(ByVal sender As Object, _
ByVal location As DataGridViewCellEventArgs) _
Handles DataGridView.CellMouseEnter
mouseLocation = location
End Sub
注解
此属性指示在用户右键单击行时显示的快捷菜单,除非 DataGridView 控件 CellContextMenuStripNeeded 事件或行 ContextMenuStrip 属性替代所单击的特定单元格的快捷菜单。
DataGridView当设置控件DataSource属性或其 VirtualMode 属性为 true
时,获取 属性的值ContextMenuStrip将RowContextMenuStripNeeded引发控件的 事件,并返回事件处理程序中指定的 属性的值DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip。 如果事件没有处理程序,则获取 属性的值 ContextMenuStrip 将返回先前指定的值或其默认值 null
。
RowContextMenuStripNeeded处理大量数据时,处理事件主要有用,以避免在设置多行的行ContextMenuStrip值时造成性能损失。 有关详细信息,请参阅 缩放 Windows 窗体 DataGridView 控件的最佳做法。
更改此属性将在 RowContextMenuStripChanged 拥有 DataGridView的 上引发 事件(如果存在)。
如果当前行是共享的,请使用 GetContextMenuStrip 方法,而不是获取此属性的值。