@Killercam의 솔루션이 작동하는 것을 찾았지만 사용자가 너무 빨리 두 번 클릭하면 약간 이상했습니다. 다른 사람도 그 사건을 발견했는지 확실하지 않습니다. 여기서 다른 해결책을 찾았 습니다 .
그것은 데이터 그리드의 CellValueChanged
및 CellMouseUp
. Changhong은 다음과 같이 설명합니다.
"그 이유는 DataGridView에서 편집이 완료되었다고 생각할 때까지 OnCellvalueChanged 이벤트가 실행되지 않기 때문입니다. OnCellvalueChanged가 각 키 입력에 대해 실행되지는 않기 때문에 TextBox 열에 대해 의미가 있지만 [ 이해하기] CheckBox. "
다음은 그의 예에서 나온 것입니다.
private void myDataGrid_OnCellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == myCheckBoxColumn.Index && e.RowIndex != -1)
{
}
}
그리고 체크 박스에 사용자가 필드를 떠날 때까지 기다리지 않고 클릭하면 편집이 완료되었음을 알리는 코드 :
private void myDataGrid_OnCellMouseUp(object sender,DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == myCheckBoxColumn.Index && e.RowIndex != -1)
{
myDataGrid.EndEdit();
}
}
편집 : DoubleClick 이벤트는 MouseUp 이벤트와 별도로 처리됩니다. DoubleClick 이벤트가 감지되면 애플리케이션은 첫 번째 MouseUp 이벤트를 완전히 무시합니다. 이 로직은 MouseUp 이벤트 외에도 CellDoubleClick 이벤트에 추가되어야합니다.
private void myDataGrid_OnCellDoubleClick(object sender,DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == myCheckBoxColumn.Index && e.RowIndex != -1)
{
myDataGrid.EndEdit();
}
}
CurrentCellDirtyStateChanged
이벤트 를 확인 하셨나요 ?