У меня есть элемент управления ListView с CheckBoxes = true
и View = Details
в форме, но мне не нужна проверка чтобы пользователь мог "отмечать" их. Я использую его для отображения статуса завершения записи. Однако я хочу использовать функцию обработчика событий, чтобы установить флажок с помощью кода (то есть при завершении записи: lvMeters_ItemCheck (null, null);
).
Я отключил проверку сама коробка (думаю, сенсорный экран на этом устройстве не совсем точен). Однако при выборе строки (у меня FullRowSelect = true
) элемент управления часто проверяет флажок, и обработчик событий, похоже, не вызывается.
I попытался в основном отменить действие в обработчике событий:
private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (sender is ListView)
{
if (e.CurrentValue == CheckState.Checked)
lvMeters.Items[e.Index].Checked = true;
else
lvMeters.Items[e.Index].Checked = false;
}
else if (e.CurrentValue == CheckState.Checked)
lvMeters.Items[e.Index].Checked = false;
else
lvMeters.Items[e.Index].Checked = true;
}
Проблема в том, что указанный выше обработчик не вызывается при выборе из списка, а обработчик событий SelectedItemChanged не вызывает этот обработчик событий, но по-прежнему устанавливает флажок при выборе. Он действительно вызывается при установке самого флажка.
Спросите, и я сделаю все возможное!
Так что, пожалуйста, скажите мне, что я делаете это совершенно неправильно и должны делать все иначе.