Windows C# CheckedListBox Checked Item Event Handling

Я в настоящее время разрабатываю приложение Окна, которое использует CheckedListBoxes для определенных аспектов программы. Проблема, с которой я встретился, состоит в том, что я пытался найти, какое событие инициировано, когда объект проверяется так, чтобы я мог включить кнопку формы, когда любой элемент списка проверяется.

Проблема состоит в том, что я пытался использовать следующее;

private void clbAvailMods_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if(e.NewValue == CheckState.Checked)
        {
            btnInstall.Enabled = true;
        }
    }

но когда я установил точку останова на, если оператор, она никогда не стреляет в проверку объекта в поле списка.

Я делаю что-то не так здесь?

7
задан sth 5 July 2010 в 23:45
поделиться

3 ответа

Стандартным приемом Windows Forms является задержка выполнения кода до завершения всех побочных эффектов события. Вы откладываете выполнение кода с помощью метода Control.BeginInvoke(). Это решит вашу проблему:

    private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e) {
        this.BeginInvoke(new MethodInvoker(evalList), null);
    }

    private void evalList() {
        bool any = false;
        for (int ix = 0; ix < checkedListBox1.Items.Count; ++ix) {
            if (checkedListBox1.GetItemChecked(ix)) {
                any = true;
                break;
            }
        }
        btnInstall.Enabled = any;
    }
20
ответ дан 6 December 2019 в 08:14
поделиться

Я думаю, что это событие SelectedIndexChanged, но я подтверждаю прямо сейчас.

РЕДАКТИРОВАТЬ: событие SelectedIndexChanged работает. Но это срабатывает независимо от того, установлен ли флажок. Поэтому я бы проверил отмеченное состояние, если вы хотите это сделать.

Но, кстати, когда я использовал событие ItemCheck, оно сработало, когда я действительно установил флажок, а не только текст.

0
ответ дан 6 December 2019 в 08:14
поделиться

​​Пара потенциальных ошибок. Предположительно, вы добавили событие через графический интерфейс VS.Net, чтобы убедиться, что оно подключено к элементу управления. Попробуйте дважды щелкнуть элемент - один раз для фокусировки элемента и еще раз для переключения состояния проверки - если вы хотите, чтобы состояние проверки элемента переключалось при первом щелчке, установите для свойства «CheckOnClick» значение true.

0
ответ дан 6 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: