DataGridViewRow.ContextMenuStrip Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el menú contextual para la fila.
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
Valor de propiedad
ContextMenuStrip asociado a la columna DataGridViewRow actual. De manera predeterminada, es null
.
Excepciones
Al obtener el valor de esta propiedad, la fila está en un control DataGridView y es una fila compartida.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar la DataGridViewColumn.ContextMenuStrip propiedad , que es casi idéntica a la ContextMenuStrip propiedad de la DataGridViewRow clase . Este ejemplo de código forma parte de un ejemplo de código más grande proporcionado en la DataGridViewColumn clase .
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
Comentarios
Esta propiedad indica el menú contextual que se muestra cuando el usuario hace clic con el botón derecho en la fila a menos que el DataGridView evento de control CellContextMenuStripNeeded o la propiedad row ContextMenuStrip invalide el menú contextual de la celda específica en la que se hizo clic.
Cuando la DataGridView propiedad de control DataSource se establece o su VirtualMode propiedad es true
, obtener el valor de la ContextMenuStrip propiedad genera el RowContextMenuStripNeeded evento del control y devuelve el valor de la DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip propiedad tal y como se especifica en el controlador de eventos. Si no hay controladores para el evento, obtener el valor de la ContextMenuStrip propiedad devuelve el valor especificado anteriormente o su valor predeterminado de null
.
Controlar el RowContextMenuStripNeeded evento es principalmente útil cuando se trabaja con grandes cantidades de datos para evitar penalizaciones de rendimiento al establecer el valor de fila ContextMenuStrip para varias filas. Para obtener más información, consulte Procedimientos recomendados para ajustar la escala del control DataGridView en Windows Forms.
Al cambiar esta propiedad, se genera el RowContextMenuStripChanged evento en el propietario DataGridView, si existe uno.
Si se comparte la fila actual, use el GetContextMenuStrip método en lugar de obtener el valor de esta propiedad.