GOAL : 이벤트 처리기를 시작하면 모든 확인란을 선택할 수 있습니다.DataGridView의 모든 확인란을 동시에 선택하십시오.
현재 : 이벤트 처리기가 정상적으로 실행됩니다. 나는 각 행을 거치며 그 행의 체크 박스를 체크하는 foreach 루프를 가지고있다.
문제 : '모두 선택'보다 먼저 행을 선택하면 선택/강조 표시된 행의 확인란을 제외한 모든 확인란이 선택됩니다. 그 후에 확인란 영역 밖에서 다른 곳을 클릭하면 확인란이 선택됩니다.
질문 : 어떤 행을 선택했는지 여부에 관계없이 모든 확인란을 같은 시간에 선택하도록하려면 어떻게해야합니까?
CODE :
foreach (DataGridViewRow row in mTargets.Rows)
{
//row.Cells[(int) menuItem.Tag].Value is the check box
//mDeselect is the boolean that I want to set
row.Cells[(int) menuItem.Tag].Value = !mDeselect;
}
ATTEMPTS : 나는 레이아웃을 다시 시작/선택을 취소하고 중단 시도했습니다. 나는 또한 다른 사람들이 같은 문제를 겪고 있는지를 조사하기 위해 노력했지만, 찾기가 어려운 주제이다.
우아한 제안이나 도움이 될 수있는 해결책에 대한 언급은 대단히 감사하겠습니다! 고맙습니다! 보인다,이 부작용이 발생하는 이유 이유는 DataGridViewCheckBoxCell은 당신이 셀을 선택하는 일마다 편집 모드에서 아직 생각 때문이다 (또는 :
는 우아한 해결책 & 설명과 함께 업데이트] 그 행을 선택하는 것입니다). 문제를 해결하기 위해 여기에 문제를 해결하는 데 도움이되는 foreach 루프 앞에 넣은 코드가 있습니다.
if (mTargets.IsCurrentCellInEditMode)
{
mTargets.EndEdit();
}
확실히 수정 작업이 거의 필요하지 않습니다. 나는 이것을 시도 할 것이다. 하지만 내가 선택한 것과 어떻게 다른가? 나에게 그것은 똑같은 것처럼 보인다. 나는이 일이 왜 일어나고 있는지에 대해 매우 의아해하고 있습니다. 왜냐하면 저는 우리가 이전에 이것을 경험 한 유일한 사람이 아니라는 것을 확신하기 때문입니다. '모두 선택'은 널리 사용되는 기능입니다. –
DataGridView는 매우 복잡한 컨트롤입니다. 그 이유 때문에 아주 이상한 일이 발생합니다. 이것은 재발 코드의 작은 버그 일 뿐이므로 확인란을 올바르게 다시 칠하지는 않습니다. 선택을 지우는 것은 선택을 DataGridView로 변경하는 것과 같지 않습니다. 비슷한 것으로 생각 하겠지만 컨트롤 내부 깊숙이 다르게 작동합니다. –
나는 이것을 시험해 보았는데, 그것은 나에게 효과가 없었다. :(선택 영역을 변경하는 위치에 따라 반 시간이 걸립니다.) –