다음을 통해 공유


DataGridViewRowContextMenuStripNeededEventHandler 대리자

정의

RowContextMenuStripNeededDataGridView 이벤트를 처리할 메서드를 나타냅니다.

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

이벤트 소스입니다.

예제

다음 코드 예제 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 여러 행에 대 한 값입니다. 자세한 내용은 Windows Forms DataGridView 컨트롤의 크기를 조정하는 최선의 방법을 참조하세요.

이벤트를 처리 하는 방법에 대 한 자세한 내용은 참조 하세요. 이벤트 처리 및 발생합니다.

DataGridViewRowContextMenuStripNeededEventHandler 대리자를 만들 때, 이벤트를 처리할 메서드를 식별합니다. 이벤트를 이벤트 처리기와 연결하려면 대리자의 인스턴스를 해당 이벤트에 추가합니다. 대리자를 제거하지 않는 경우 이벤트가 발생할 때마다 이벤트 처리기가 호출됩니다. 이벤트 처리기 대리자에 대 한 자세한 내용은 참조 하세요. 이벤트 처리 및 발생합니다.

확장 메서드

GetMethodInfo(Delegate)

지정된 대리자가 나타내는 메서드를 나타내는 개체를 가져옵니다.

적용 대상

추가 정보