Установить неопределенное состояние с помощью мыши в CheckedListBox


Мне нужна помощь, и я бьюсь головой о стену. У меня есть приложение, которое использует три состояния CheckedListBox. Я использую эти три состояния для конкретных целей:

Проверено означает, что техник выполнил действие Непроверенный означает, что техник не выполнял действия Неопределенный означает, что техник не выполнил действие, потому что оно было ненужным.

Мне нужно иметь возможность переключаться с мышкой от проверенных ручной неопределенным, чтобы проверили как надо. Если бы я использовал CheckBox и ThreeState были установлены в True, это именно то, что произойдет, но кажется, что единственный способ установить неопределенное состояние в CheckedListBox - это через код.

Может ли кто - нибудь подсказать мне, что делать? Меня поражает, что это не свойство, которое вы можете установить, как вы можете в CheckBox.

Я думаю, что меня бросает в то, что никто, кажется, не нуждался в этой функциональности раньше. Я ничего не нашел в Google о том, как это можно сделать или задать вопрос.

2 2

2 ответа:

Я не думаю, что в элементе управления есть свойство для управления этим поведением, но его легко реализовать в коде:

    void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        switch (e.CurrentValue)
        {
            case CheckState.Checked:
                e.NewValue = CheckState.Unchecked;
                break;

            case CheckState.Indeterminate:
                e.NewValue = CheckState.Checked;
                break;

            case CheckState.Unchecked:
                e.NewValue = CheckState.Indeterminate;
                break;
        }
    }

Я перевел предложенное предложение из C# в VB следующим образом

Private Sub CheckedListBoxCriteria_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles CheckedListBoxCriteria.ItemCheck

Select Case e.CurrentValue
   Case CheckState.Checked
      e.NewValue = CheckState.Unchecked
      Exit Select

   Case CheckState.Indeterminate
      e.NewValue = CheckState.Checked
      Exit Select

   Case CheckState.Unchecked
      e.NewValue = CheckState.Indeterminate
      Exit Select
   End Select
End Sub

Сработало как заклинание. Я мог бы поклясться, что попробовал что-то подобное, но у меня ничего не вышло. Но это сработало. Большое вам спасибо. Столь простой. Когда-нибудь я это выясню. Обучение самому себе состоит в том, чтобы придумать идею и копаться в ней, пока не найду ключ.