Compartir vía


DataGridViewRowContextMenuStripNeededEventHandler Delegado

Definición

Representa el método que controlará el evento RowContextMenuStripNeeded de 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)

Parámetros

sender
Object

Origen del evento.

Ejemplos

En el ejemplo de código siguiente, el RowContextMenuStripNeeded evento se controla 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.

Cuando se crea un delegado DataGridViewRowContextMenuStripNeededEventHandler, se identifica el método que controlará el evento. Para asociar el evento al controlador, se debe agregar una instancia del delegado al evento. Siempre que se produce el evento, se llama a su controlador, a menos que se quite el delegado. Para obtener más información sobre los delegados del controlador de eventos, vea Control y generación de eventos.

Métodos de extensión

GetMethodInfo(Delegate)

Obtiene un objeto que representa el método representado por el delegado especificado.

Se aplica a

Consulte también