2014-09-12 2 views
2

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(); 
} 

답변

1

이 부작용이 발생하는 이유는 DataGridViewCheckBoxCell이 셀을 선택했을 때마다 (또는 해당 행을 선택하고있을 때) DataGridViewCheckBoxCell이 여전히 편집 모드에 있다고 생각하기 때문입니다. 이 문제를 해결하기 위해 문제를 해결하는 데 도움이되는 foreach 루프 앞에 넣은 코드는 다음과 같습니다.

if (mTargets.IsCurrentCellInEditMode) 
{ 
    mTargets.EndEdit(); 
} 
0

이전에도이 문제가있었습니다. 그 값을 설정하지 않는다는 것만이 아닙니다. 내가 그것을 고정하는 방식 (별로 생각하지는 않지만 작동)은 체크 박스 값을 설정 한 다음 선택한 행을 다른 행으로 변경 한 다음 다시 변경합니다.

+0

확실히 수정 작업이 거의 필요하지 않습니다. 나는 이것을 시도 할 것이다. 하지만 내가 선택한 것과 어떻게 다른가? 나에게 그것은 똑같은 것처럼 보인다. 나는이 일이 왜 일어나고 있는지에 대해 매우 의아해하고 있습니다. 왜냐하면 저는 우리가 이전에 이것을 경험 한 유일한 사람이 아니라는 것을 확신하기 때문입니다. '모두 선택'은 널리 사용되는 기능입니다. –

+1

DataGridView는 매우 복잡한 컨트롤입니다. 그 이유 때문에 아주 이상한 일이 발생합니다. 이것은 재발 코드의 작은 버그 일 뿐이므로 확인란을 올바르게 다시 칠하지는 않습니다. 선택을 지우는 것은 선택을 DataGridView로 변경하는 것과 같지 않습니다. 비슷한 것으로 생각 하겠지만 컨트롤 내부 깊숙이 다르게 작동합니다. –

+0

나는 이것을 시험해 보았는데, 그것은 나에게 효과가 없었다. :(선택 영역을 변경하는 위치에 따라 반 시간이 걸립니다.) –

관련 문제