내보내기(0) 인쇄
모두 확장
확장 최소화
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

DataGridView.CellContextMenuStripNeeded 이벤트

셀의 바로 가기 메뉴가 필요한 경우 발생 합니다.

네임스페이스:  System.Windows.Forms
어셈블리:  System.Windows.Forms(System.Windows.Forms.dll)
public event DataGridViewCellContextMenuStripNeededEventHandler CellContextMenuStripNeeded

CellContextMenuStripNeeded 이벤트 발생만 때를 DataGridView 컨트롤 DataSource 속성을 설정 또는 해당 VirtualMode 속성입니다 true.

처리할 때 해당 CellContextMenuStripNeeded 이벤트 처리기에 지정한 바로 가기 메뉴가 표시 됩니다 클릭할 셀 때마다. 현재 상태 나 셀의 값에 의해 결정 되는 바로 가기 메뉴를 표시 하려는 경우에 유용 합니다.

CellContextMenuStripNeeded 또한 이벤트가 발생할 때마다 값은 DataGridViewCell.ContextMenuStrip 속성 검색 되거나 프로그래밍 방식으로 또는 클릭할 셀 때.

사용할 수는 DataGridViewCellEventArgs.ColumnIndexRowIndex 상태를 있는 셀의 값을 확인 하 고이 정보를 사용 하 여 변경 또는 수정할 수 있는 속성은 DataGridViewCellContextMenuStripNeededEventArgs.ContextMenuStrip 속성. 이 속성은 셀 값으로 초기화 됩니다 ContextMenuStrip 이벤트 값이 재정의 하는 속성입니다.

처리는 CellContextMenuStripNeeded 많은 양의 셀을 설정 하 여 성능 저하를 방지 하려면 데이터를 사용 하는 경우 이벤트 ContextMenuStrip 여러 셀에 대 한 값입니다. 자세한 내용은 Windows Forms DataGridView 컨트롤의 크기를 조정하는 최선의 방법.

행을 설정 하 여 개별 셀 대신 개별 행에 대 한 또한 바로 가기 메뉴를 지정할 수 있습니다 ContextMenuStrip 속성 또는 처리는 RowContextMenuStripNeeded 이벤트입니다. ContextMenuStrip 속성 설정은 행 우선 ContextMenuStrip 속성 설정 하는 CellContextMenuStripNeeded 이벤트를 모두 무시는 RowContextMenuStripNeeded 이벤트와 행 ContextMenuStrip 속성 설정. 그러나 지정할 수 있는 null 행 바로 가기 메뉴가 재정의 되지 않도록 하려면 셀 바로 가기 메뉴에 대 한.

이벤트를 처리 하는 방법에 대 한 자세한 내용은 참조 하십시오. 이벤트 사용.

다음 코드 예제에서는 CellContextMenuStripNeeded 이벤트 처리기는 사용자가 셀을 마우스 오른쪽 단추로 클릭할 때 사용 되는 사용자 지정 바로 가기 메뉴를 표시 합니다.


private ToolStripMenuItem wholeTable = new ToolStripMenuItem();
private ToolStripMenuItem lookUp = new ToolStripMenuItem();
private ContextMenuStrip strip;
private string cellErrorText;

private void dataGridView1_CellContextMenuStripNeeded(object sender,
    DataGridViewCellContextMenuStripNeededEventArgs e)
{
    cellErrorText = String.Empty;

    if (strip == null)
    {
        strip = new ContextMenuStrip();
        lookUp.Text = "Look Up";
        wholeTable.Text = "See Whole Table";
        strip.Items.Add(lookUp);
        strip.Items.Add(wholeTable);
    }
    e.ContextMenuStrip = strip;
}

private void wholeTable_Click(object sender, EventArgs e)
{
    dataGridView1.DataSource = Populate("Select * from employees", true);
}

private DataGridViewCellEventArgs theCellImHoveringOver;

private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
    theCellImHoveringOver = e;
}

private DataGridViewCellEventArgs cellErrorLocation;

private void lookUp_Click(object sender, EventArgs e)
{
    try
    {
        dataGridView1.DataSource = Populate("Select * from employees where " +
            dataGridView1.Columns[theCellImHoveringOver.ColumnIndex].Name + " = '" +
            dataGridView1.Rows[theCellImHoveringOver.RowIndex].
            Cells[theCellImHoveringOver.ColumnIndex].Value + "'",
            true);
    }
    catch (SqlException)
    {
        cellErrorText = "Can't look this cell up";
        cellErrorLocation = theCellImHoveringOver;
    }
}

private void dataGridView1_CellErrorTextNeeded(object sender,
    DataGridViewCellErrorTextNeededEventArgs e)
{
    if (cellErrorLocation != null)
    {
        if (e.ColumnIndex == cellErrorLocation.ColumnIndex &&
            e.RowIndex == cellErrorLocation.RowIndex)
        {
            e.ErrorText = cellErrorText;
        }
    }
}

private DataTable Populate(string query, bool resetUnsharedCounter)
{
    if (resetUnsharedCounter)
    {
        ResetCounter();
    }

    // Alter the data source as necessary
    SqlDataAdapter adapter = new SqlDataAdapter(query,
        new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" +
        "Initial Catalog=Northwind;Data Source=localhost"));

    DataTable table = new DataTable();
    table.Locale = System.Globalization.CultureInfo.InvariantCulture;
    adapter.Fill(table);
    return table;
}

private Label count = new Label();
private int unsharedRowCounter;

private void ResetCounter()
{
    unsharedRowCounter = 0;
    count.Text = unsharedRowCounter.ToString();
}


.NET Framework

4.5, 4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework 에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 다음을 참조하십시오. .NET Framework 시스템 요구 사항.
이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft. All rights reserved.