DataGridView.RowContextMenuStripNeeded Evento

Definición

Se produce cuando se necesita el menú contextual de una fila.

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 

Tipo de evento

Ejemplos

En el ejemplo de código siguiente se controla el RowContextMenuStripNeeded evento para proporcionar un ContextMenuStrip elemento basado en el título del empleado. En este ejemplo, hay dos menús contextuales, uno para administradores y otro para todos los demás empleados.

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

Comentarios

El RowContextMenuStripNeeded evento solo se produce cuando la propiedad de DataGridView control DataSource se establece o su VirtualMode propiedad es true. Controlar el RowContextMenuStripNeeded evento es útil cuando se desea mostrar un menú contextual determinado por el estado actual de una fila o los valores que contiene.

Al controlar el RowContextMenuStripNeeded evento, el menú contextual que especifique en el controlador se muestra cada vez que el usuario hace clic con el botón derecho en una fila a menos CellContextMenuStripNeeded que invalide el menú contextual de la celda específica en la que se hizo clic.

El RowContextMenuStripNeeded evento también se produce cada vez que se recupera el valor de la DataGridViewRow.ContextMenuStrip propiedad, ya sea mediante programación o cuando el usuario hace clic con el botón derecho en una fila.

Puede usar la DataGridViewRowContextMenuStripNeededEventArgs.RowIndex propiedad para determinar el estado de una fila o los valores que contiene y usar esta información para cambiar o modificar la DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip propiedad. Esta propiedad se inicializa con el valor de la propiedad row ContextMenuStrip , que invalida el valor del evento.

Controle el RowContextMenuStripNeeded evento al trabajar con grandes cantidades de datos para evitar las penalizaciones de rendimiento de 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.

Para obtener más información acerca de cómo controlar eventos, vea controlar y provocar eventos.

Se aplica a

Consulte también