Teilen über


DataGridViewRowContextMenuStripNeededEventHandler Delegat

Definition

Stellt die Methode zur Behandlung des RowContextMenuStripNeeded-Ereignisses eines DataGridView-Objekts dar.

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)

Parameter

sender
Object

Die Quelle des Ereignisses.

Beispiele

Im folgenden Codebeispiel wird das RowContextMenuStripNeeded Ereignis behandelt, um basierend auf dem Titel des Mitarbeiters eine ContextMenuStrip bereitzustellen. In diesem Beispiel gibt es zwei Kontextmenüs, eines für Vorgesetzte und eines für alle anderen Mitarbeiter.

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

Hinweise

Das RowContextMenuStripNeeded Ereignis tritt nur auf, wenn die DataGridView Steuerelementeigenschaft DataSource festgelegt ist oder die VirtualMode -Eigenschaft ist true. Die Behandlung des RowContextMenuStripNeeded Ereignisses ist nützlich, wenn Sie ein Kontextmenü anzeigen möchten, das durch den aktuellen Zustand einer Zeile oder die darin enthaltenen Werte bestimmt wird.

Wenn Sie das RowContextMenuStripNeeded Ereignis behandeln, wird das Kontextmenü, das Sie im Handler angeben, immer angezeigt, wenn der Benutzer mit der rechten Maustaste auf eine Zeile klickt, es sei denn, das CellContextMenuStripNeeded überschreibt das Kontextmenü für die bestimmte Zelle, auf die geklickt wurde.

Das RowContextMenuStripNeeded Ereignis tritt auch auf, wenn der Wert der DataGridViewRow.ContextMenuStrip Eigenschaft abgerufen wird, entweder programmgesteuert oder wenn der Benutzer mit der rechten Maustaste auf eine Zeile klickt.

Sie können die DataGridViewRowContextMenuStripNeededEventArgs.RowIndex -Eigenschaft verwenden, um den Zustand einer Zeile oder die darin enthaltenen Werte zu bestimmen, und diese Informationen verwenden, um die DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip Eigenschaft zu ändern oder zu ändern. Diese Eigenschaft wird mit dem Wert der Zeileneigenschaft ContextMenuStrip initialisiert, die vom Ereigniswert überschrieben wird.

Behandeln Sie das RowContextMenuStripNeeded Ereignis, wenn Sie mit großen Datenmengen arbeiten, um leistungseinbußen beim Festlegen des Zeilenwerts ContextMenuStrip für mehrere Zeilen zu vermeiden. Weitere Informationen finden Sie unter Empfohlene Vorgehensweisen für das Skalieren des DataGridView-Steuerelements in Windows Forms.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.

Beim Erstellen eines DataGridViewRowContextMenuStripNeededEventHandler-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Weitere Informationen zu Ereignishandlerdelegaten finden Sie unter Behandeln und Auslösen von Ereignissen.

Erweiterungsmethoden

GetMethodInfo(Delegate)

Ruft ein Objekt ab, das die Methode darstellt, die vom angegebenen Delegaten dargestellt wird.

Gilt für:

Weitere Informationen