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


DataGridViewRowContextMenuStripNeededEventHandler Делегат

Определение

Представляет метод, обрабатывающий событие RowContextMenuStripNeeded объекта DataGridView.

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)

Параметры

sender
Object

Источник события.

e
DataGridViewRowContextMenuStripNeededEventArgs

Объект DataGridViewRowContextMenuStripNeededEventArgs, содержащий данные события.

Примеры

В следующем примере 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.

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

При создании делегата DataGridViewRowContextMenuStripNeededEventHandler необходимо указать метод, обрабатывающий событие. Чтобы связать событие с обработчиком событий, нужно добавить в событие экземпляр делегата. Обработчик событий вызывается всякий раз, когда происходит событие, если делегат не удален. Дополнительные сведения о делегатах обработчика событий см. в разделе Обработка и вызов событий.

Методы расширения

GetMethodInfo(Delegate)

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

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

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