DataGridView.RowContextMenuStripNeeded Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre quando o menu de atalho de uma linha é necessário.
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
Tipo de evento
Exemplos
O exemplo de código a seguir manipula o RowContextMenuStripNeeded evento para fornecer uma ContextMenuStrip base no título do funcionário. Neste exemplo, há dois menus de atalho, um para gerentes e outro para todos os outros funcionários.
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
Comentários
O RowContextMenuStripNeeded evento ocorre somente quando a DataGridView propriedade de controle DataSource é definida ou sua VirtualMode propriedade é true. Manipular o RowContextMenuStripNeeded evento é útil quando você deseja exibir um menu de atalho determinado pelo estado atual de uma linha ou pelos valores que ele contém.
Quando você manipula o RowContextMenuStripNeeded evento, o menu de atalho especificado no manipulador é mostrado sempre que o usuário clica com o botão direito do mouse em uma linha, a menos que o CellContextMenuStripNeeded menu de atalho substitua a célula específica clicada.
O RowContextMenuStripNeeded evento também ocorre sempre que o valor da DataGridViewRow.ContextMenuStrip propriedade é recuperado, programaticamente ou quando o usuário clica com o botão direito do mouse em uma linha.
Você pode usar a DataGridViewRowContextMenuStripNeededEventArgs.RowIndex propriedade para determinar o estado de uma linha ou os valores que ela contém e usar essas informações para alterar ou modificar a DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip propriedade. Essa propriedade é inicializada com o valor da propriedade de linha ContextMenuStrip , que o valor do evento substitui.
Manipule o RowContextMenuStripNeeded evento ao trabalhar com grandes quantidades de dados para evitar as penalidades de desempenho de definir o valor da linha ContextMenuStrip para várias linhas. Para obter mais informações, consulte As práticas recomendadas para dimensionar o controle DataGridView dos Windows Forms.
Para obter mais informações sobre como lidar com eventos, consulte Manipulando e levantando eventos.