Изменяйте состояние элемента ListViewItem только в том случае, если установлен флажок
-
05-07-2019 - |
Вопрос
По умолчанию двойной щелчок по ListViewItem переключает его состояние Checked. Я хочу, чтобы состояние «Проверено» можно было изменить, установив флажок элемента или нажав клавишу пробела, когда элемент выделен. Это легко сделать?
Решение
Решение включает в себя 3 события и одну переменную состояния типа bool:
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;
}
Проверка элемента позволяет избежать перехода в другое состояние проверки (вызывается до события ItemChecked). Решение простое и уверенное.
Чтобы выяснить это, я провел небольшой тест с различными событиями:
При нажатии:
<Ол>При двойном щелчке.
<Ол>Не связан с StackOverflow