DataSource가 DataTable 인 DataGridView가 있습니다. 이 DataTable에는 DataGridView에서 확인란으로 해석되는 부울 열이 있습니다.DataGridView의 바인딩 된 테이블은 두 번 클릭 할 때 하나의 RowChanged 이벤트 만 생성합니다. 나는 그것을 어떻게 두 가지로 만들까요?
employeeSelectionTable.Columns.Add("IsSelected", typeof(bool));
...
employeeSelectionTable.RowChanged += selectionTableRowChanged;
dataGridViewSelectedEmployees.DataSource = employeeSelectionTable;
...
private void selectionTableRowChanged(object sender, DataRowChangeEventArgs e)
{
if ((bool)e.Row["IsSelected"])
{
Console.Writeline("Is Selected");
}
else
{
Console.Writeline("Is Not Selected");
}
break;
}
체크 박스에 사용자가 단일 클릭, 그것은 확인됩니다
및 selectionTableRowChanged은 출력 "을 선택."합니다
마찬가지로 사용자가 다시 확인하면 상자가 지워지고 selectionTableRowChanged는 "선택되지 않음"을 출력합니다. 나는 문제가있는 경우 여기에
가있다 :
체크 박스에서 더블 클릭이 확인란이 선택됩니다 때의있는 rowChanged 이벤트 ("선택") 호출되는 다음 확인란이 해제되고 대응하는 RowChanged 이벤트는 불려 가지 않습니다. 이제 RowChanged 이벤트 구독자가 동기화되지 않습니다.
내 솔루션은 이제 DataGridView를 하위 클래스로 만들고 WM_LBUTTONDBLCLICK를 먹도록 WndProc를 재정 의하여 컨트롤에 대한 두 번 클릭이 무시됩니다. 더 좋은 솔루션이 있습니까?