확인란을 클릭 한 경우 ListViewItem의 확인 상태 만 변경합니다.
-
05-07-2019 - |
문제
기본적으로 ListViewItem을 두 번 클릭하면 확인 된 상태가 전환됩니다. 항목의 확인란을 클릭하거나 항목이 강조 표시되는 동안 우주 막대를 누르면 확인 된 상태 만 변경되기를 원합니다. 이것은 쉽게 할 수 있습니까?
해결책
이 솔루션에는 3 개의 이벤트와 유형 부울의 1 개의 상태 변수가 포함됩니다.
private bool inhibitAutoCheck;
private void listView1_MouseDown(object sender, MouseEventArgs e) {
inhibitAutoCheck = true;
}
private void listView1_MouseUp(object sender, MouseEventArgs e) {
inhibitAutoCheck = false;
}
private void listView1_ItemCheck(object sender, ItemCheckEventArgs e) {
if (inhibitAutoCheck)
e.NewValue = e.CurrentValue;
}
항목 검사를 통해 다른 체크 상태로의 전환을 피할 수 있습니다 (항목 확인 된 이벤트 전에 호출). 솔루션은 간단하고 확실합니다.
그것을 찾으려면 다른 이벤트로 작은 테스트를했습니다.
클릭 할 때 :
- Mousedown <--------------- 억제 된 영역
- 딸깍 하는 소리
- Mouseclick
- 마우스 up ------------>
- 항목 검사 (밖의 억제 영역)
- 항목 확인
두 번 클릭 할 때 :
- Mousedown <--------------- 억제 된 영역
- itemselectionChanged
- 선택된 indexChanged
- 딸깍 하는 소리
- Mouseclick
- 마우스 up ------------>
- Mousedown <--------------- 억제 된 영역
- 항목 검사 (내부에 억제 영역)
- itemactivate
- 더블 클릭
- Mousedoubleclick
- 마우스 up ------------>
제휴하지 않습니다 StackOverflow