본문 바로가기
Application/C#.net

DataGridView. checkbox 변경 이벤트 처리

by 현이빈이 2008. 12. 12.
반응형
DataGridView..::.CurrentCellDirtyStateChanged 이벤트

업데이트: 2007년 11월

셀의 상태가 셀 내용의 변경과 관련되어 변경되면 발생합니다.

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

Visual Basic(선언)
Public Event CurrentCellDirtyStateChanged As EventHandler
Visual Basic (사용법)
Dim instance As DataGridView
Dim handler As EventHandler

AddHandler instance.CurrentCellDirtyStateChanged, handler
C#
public event EventHandler CurrentCellDirtyStateChanged
Visual C++
public:
 event EventHandler^ CurrentCellDirtyStateChanged {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
J#
/** @event */
public void add_CurrentCellDirtyStateChanged (EventHandler value)
/** @event */
public void remove_CurrentCellDirtyStateChanged (EventHandler value)
JScript
JScript에서는 이벤트를 지원하지 않습니다.

셀의 내용이 변경되었지만 변경 내용이 저장되지 않은 경우 셀은 수정된 상태로 표시됩니다.

일반적으로 이 이벤트는 셀이 편집되었지만 변경 내용이 데이터 캐시에 커밋되지 않았거나 편집 작업이 취소된 경우 발생합니다.

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

다음 코드 예제에서는 CurrentCellDirtyStateChanged 이벤트를 처리하는 방법을 보여 줍니다. 이 예제에서 이벤트 처리기는 CommitEdit 메서드를 호출하여 CellValueChanged 이벤트를 발생시키고 DataGridViewCheckBoxCell의 현재 값을 확인합니다. 이 코드 예제는 방법: Windows Forms DataGridView 컨트롤의 단추 열에서 단추 비활성화에서 제공되는 보다 큰 예제의 일부입니다.

Visual Basic
' This event handler manually raises the CellValueChanged event
' by calling the CommitEdit method.
Sub dataGridView1_CurrentCellDirtyStateChanged( _
    ByVal sender As Object, ByVal e As EventArgs) _
    Handles dataGridView1.CurrentCellDirtyStateChanged

    If dataGridView1.IsCurrentCellDirty Then
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
    End If
End Sub

' If a check box cell is clicked, this event handler disables  
' or enables the button in the same row as the clicked cell.
Public Sub dataGridView1_CellValueChanged(ByVal sender As Object, _
    ByVal e As DataGridViewCellEventArgs) _
    Handles dataGridView1.CellValueChanged

    If dataGridView1.Columns(e.ColumnIndex).Name = "CheckBoxes" Then
        Dim buttonCell As DataGridViewDisableButtonCell = _
            CType(dataGridView1.Rows(e.RowIndex).Cells("Buttons"), _
            DataGridViewDisableButtonCell)

        Dim checkCell As DataGridViewCheckBoxCell = _
            CType(dataGridView1.Rows(e.RowIndex).Cells("CheckBoxes"), _
            DataGridViewCheckBoxCell)
        buttonCell.Enabled = Not CType(checkCell.Value, [Boolean])

        dataGridView1.Invalidate()
    End If
End Sub

// This event handler manually raises the CellValueChanged event
// by calling the CommitEdit method.
void dataGridView1_CurrentCellDirtyStateChanged(object sender,
    EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

// If a check box cell is clicked, this event handler disables  
// or enables the button in the same row as the clicked cell.
public void dataGridView1_CellValueChanged(object sender,
    DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "CheckBoxes")
    {
        DataGridViewDisableButtonCell buttonCell =
            (DataGridViewDisableButtonCell)dataGridView1.
            Rows[e.RowIndex].Cells["Buttons"];

        DataGridViewCheckBoxCell checkCell =
            (DataGridViewCheckBoxCell)dataGridView1.
            Rows[e.RowIndex].Cells["CheckBoxes"];
        buttonCell.Enabled = !(Boolean)checkCell.Value;

        dataGridView1.Invalidate();
    }
}

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0에서 지원
반응형