Поделиться через


DataGridView.RowContextMenuStripNeeded Событие

Определение

Происходит при необходимости контекстного меню строки.

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 

Тип события

Примеры

В следующем примере кода событие обрабатывается RowContextMenuStripNeeded для предоставления ContextMenuStrip на основе названия сотрудника. В этом примере есть два контекстных меню, один для руководителей и один для всех остальных сотрудников.

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

Комментарии

Событие RowContextMenuStripNeeded происходит только в том случае, если DataGridView свойство элемента управления DataSource задано или его VirtualMode свойство true. RowContextMenuStripNeeded Обработка события полезна при отображении контекстного меню, определяемого текущим состоянием строки или значениями, содержащимися в ней.

При обработке RowContextMenuStripNeeded события контекстное меню, указанное в обработчике, отображается всякий раз, когда пользователь щелкает строку правой кнопкой мыши, если CellContextMenuStripNeeded только не переопределяет контекстное меню для определенной ячейки, которая была щелкнуна.

Событие RowContextMenuStripNeeded также происходит всякий раз, когда значение DataGridViewRow.ContextMenuStrip свойства извлекается программным способом или когда пользователь щелкает строку правой кнопкой мыши.

Свойство можно использовать DataGridViewRowContextMenuStripNeededEventArgs.RowIndex для определения состояния строки или значений, содержащихся в ней, и использовать эти сведения для изменения или изменения DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip свойства. Это свойство инициализируется со значением свойства строки ContextMenuStrip , которое переопределяет значение события.

RowContextMenuStripNeeded Обработайте событие при работе с большими объемами данных, чтобы избежать штрафов за производительность задания значения строки ContextMenuStrip для нескольких строк. Дополнительные сведения см. в рекомендациях по масштабированию элемента управления DataGridView в Windows Forms.

Дополнительные сведения об обработке событий см. в разделе "Обработка и создание событий".

Применяется к

См. также раздел