DataGridView.RowContextMenuStripNeeded Evento

Definição

Ocorre quando é necessário o menu de atalhos de uma linha.

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 seguinte exemplo de código trata do RowContextMenuStripNeeded evento para fornecer um ContextMenuStrip com base no título do funcionário. Neste exemplo, existem dois menus de atalho, um para gestores 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

Observações

O RowContextMenuStripNeeded evento ocorre apenas quando a DataGridView propriedade de controlo DataSource está definida ou a sua VirtualMode propriedade é true. Gerir o RowContextMenuStripNeeded evento é útil quando se quer mostrar um menu de atalho determinado pelo estado atual de uma linha ou pelos valores que ela contém.

Quando lidas com o RowContextMenuStripNeeded evento, o menu de atalhos que especificas no handler é mostrado sempre que o utilizador clica com o botão direito numa linha, a menos que este CellContextMenuStripNeeded sobreponha o menu de atalhos para a célula específica em que foi clicado.

O RowContextMenuStripNeeded evento também ocorre sempre que o valor da DataGridViewRow.ContextMenuStrip propriedade é recuperado, seja programaticamente ou quando o utilizador clica com o botão direito numa linha.

Pode usar a DataGridViewRowContextMenuStripNeededEventArgs.RowIndex propriedade para determinar o estado de uma linha ou os valores que ela contém, e usar esta informação para alterar ou modificar a DataGridViewRowContextMenuStripNeededEventArgs.ContextMenuStrip propriedade. Esta propriedade é inicializada com o valor da propriedade linha ContextMenuStrip , que o valor do evento sobrepõe.

Trate do RowContextMenuStripNeeded evento ao trabalhar com grandes quantidades de dados para evitar as penalizações de desempenho de definir o valor da linha ContextMenuStrip para várias linhas. Para mais informações, consulte Boas Práticas para Escalar o Controlo Windows Forms DataGridView.

Para mais informações sobre como gerir eventos, consulte Gestão e Levantamento de Eventos.

Aplica-se a

Ver também