DataGridViewRowContextMenuStripNeededEventHandler Delegado

Definición

Representa el método que controlará el evento RowContextMenuStripNeeded de DataGridView.Represents the method that will handle the RowContextMenuStripNeeded event of a DataGridView.

public delegate void DataGridViewRowContextMenuStripNeededEventHandler(System::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.The source of the event.

Herencia
DataGridViewRowContextMenuStripNeededEventHandler

Ejemplos

En el ejemplo de código siguiente, RowContextMenuStripNeeded el evento se controla para proporcionar ContextMenuStrip un basado en el título del empleado.In the following code example, the RowContextMenuStripNeeded event is handled to provide a ContextMenuStrip based on the title of the employee. En este ejemplo, hay dos menús contextuales, uno para los administradores y otro para los demás empleados.In this example, two there are two context menus, one for managers and one for all other employees.

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 DataGridView se DataSource establece la propiedad del control VirtualMode o su truepropiedad es.The RowContextMenuStripNeeded event occurs only when the DataGridView control DataSource property is set or its VirtualMode property is true. Controlar el RowContextMenuStripNeeded evento resulta útil cuando se desea mostrar un menú contextual determinado por el estado actual de una fila o los valores que contiene.Handling the RowContextMenuStripNeeded event is useful when you want to display a shortcut menu determined by a row's current state or the values it contains.

Al controlar el RowContextMenuStripNeeded evento, el menú contextual que se especifica en el controlador se muestra cada vez que el usuario hace clic con el botón secundario CellContextMenuStripNeeded en una fila, a menos que invalide el menú contextual de la celda específica en la que se hizo clic.When you handle the RowContextMenuStripNeeded event, the shortcut menu that you specify in the handler is shown whenever the user right-clicks a row unless the CellContextMenuStripNeeded overrides the shortcut menu for the specific cell that was clicked.

El RowContextMenuStripNeeded evento también se produce siempre que se recupera DataGridViewRow.ContextMenuStrip el valor de la propiedad, ya sea mediante programación o cuando el usuario hace clic con el botón secundario en una fila.The RowContextMenuStripNeeded event also occurs whenever the value of the DataGridViewRow.ContextMenuStrip property is retrieved, either programmatically or when the user right-clicks a row.

Puede utilizar la DataGridViewRowContextMenuStripNeededEventArgs.RowIndex propiedad para determinar el estado de una fila o los valores que contiene y utilizar esta información para cambiar o modificar la DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip propiedad.You can use the DataGridViewRowContextMenuStripNeededEventArgs.RowIndex property to determine the state of a row or the values it contains, and use this information to change or modify the DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip property. Esta propiedad se inicializa con el valor de la propiedad Row ContextMenuStrip , que reemplaza el valor de evento.This property is initialized with the value of the row ContextMenuStrip property, which the event value overrides.

Controle RowContextMenuStripNeeded el evento al trabajar con grandes cantidades de datos para evitar las penalizaciones en el rendimiento de ContextMenuStrip establecer el valor de fila de varias filas.Handle the RowContextMenuStripNeeded event when working with large amounts of data to avoid the performance penalties of setting the row ContextMenuStrip value for multiple rows. Para obtener más información, consulte Procedimientos recomendados para ajustar la escala del control DataGridView en Windows Forms.For more information, see Best Practices for Scaling the Windows Forms DataGridView Control.

Para obtener más información acerca de cómo controlar eventos, vea controlar y provocar eventos.For more information about how to handle events, see Handling and Raising Events.

Cuando se crea un delegado DataGridViewRowContextMenuStripNeededEventHandler, se identifica el método que controlará el evento.When you create a DataGridViewRowContextMenuStripNeededEventHandler delegate, you identify the method that will handle the event. Para asociar el evento al controlador, se debe agregar una instancia del delegado al evento.To associate the event with your event handler, add an instance of the delegate to the event. Siempre que se produce el evento, se llama a su controlador, a menos que se quite el delegado.The event handler is called whenever the event occurs, unless you remove the delegate. Para obtener más información sobre los delegados de controladores de eventos, vea controlar y provocar eventos.For more information about event-handler delegates, see Handling and Raising Events.

Métodos de extensión

GetMethodInfo(Delegate)

Obtiene un objeto que representa el método representado por el delegado especificado.Gets an object that represents the method represented by the specified delegate.

Se aplica a

Consulte también: