Установить неопределенное состояние с помощью мыши в CheckedListBox - PullRequest
2 голосов
/ 13 декабря 2011

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 13 декабря 2011

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

    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;
        }
    }
0 голосов
/ 13 декабря 2011

Я перевел предложенное предложение с 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

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

...