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.

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

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

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