DataGridView.RowContextMenuStripNeeded Zdarzenie

Definicja

Występuje, gdy potrzebne jest menu skrótów wiersza.

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 

Typ zdarzenia

Przykłady

Poniższy przykład kodu obsługuje RowContextMenuStripNeeded zdarzenie, aby podać element ContextMenuStrip na podstawie tytułu pracownika. W tym przykładzie istnieją dwa menu skrótów, jedno dla menedżerów i jeden dla wszystkich innych pracowników.

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

Uwagi

Zdarzenie RowContextMenuStripNeeded występuje tylko wtedy, gdy właściwość kontrolki DataGridViewDataSource jest ustawiona lub jej VirtualMode właściwość to true. Obsługa RowContextMenuStripNeeded zdarzenia jest przydatna, gdy chcesz wyświetlić menu skrótów określone przez bieżący stan wiersza lub wartości, które zawiera.

Podczas obsługi RowContextMenuStripNeeded zdarzenia menu skrótów określone w procedurze obsługi jest wyświetlane za każdym razem, gdy użytkownik kliknie prawym przyciskiem myszy wiersz, chyba że CellContextMenuStripNeeded zastąpi menu skrótów dla określonej komórki, która została kliknięty.

Zdarzenie RowContextMenuStripNeeded występuje również za każdym razem, gdy zostanie pobrana wartość DataGridViewRow.ContextMenuStrip właściwości, programowo lub gdy użytkownik kliknie prawym przyciskiem myszy wiersz.

Za pomocą DataGridViewRowContextMenuStripNeededEventArgs.RowIndex właściwości można określić stan wiersza lub wartości, które zawiera, i użyć tych informacji, aby zmienić lub zmodyfikować DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip właściwość. Ta właściwość jest inicjowana z wartością właściwości wiersza ContextMenuStrip , która zastępuje wartość zdarzenia.

Obsługa zdarzenia RowContextMenuStripNeeded podczas pracy z dużymi ilościami danych, aby uniknąć kar za wydajność ustawiania wartości wiersza ContextMenuStrip dla wielu wierszy. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące skalowania kontrolki Windows Forms DataGridView.

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.

Dotyczy

Zobacz też