DataGridView.RowContextMenuStripNeeded Ereignis

Definition

Tritt ein, wenn das Kontextmenü einer Zeile benötigt wird.

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 

Ereignistyp

Beispiele

Im folgenden Codebeispiel wird das RowContextMenuStripNeeded Ereignis verarbeitet, das basierend auf dem Titel des Mitarbeiters bereitgestellt ContextMenuStrip werden soll. In diesem Beispiel gibt es zwei Kontextmenüs, eines für Manager 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 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ü angezeigt, das Sie im Handler angeben, wenn der Benutzer mit der rechten Maustaste auf eine Zeile klickt, es sei denn, das CellContextMenuStripNeeded Kontextmenü für die bestimmte Zelle überschreibt, 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 der 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 außer Kraft gesetzt 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.

Gilt für:

Weitere Informationen