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.
Дополнительные сведения об обработке событий см. в разделе "Обработка и создание событий".