Как вызвать событие при изменении любого из значений CheckState в CheckListBox - PullRequest
0 голосов
/ 16 января 2012

У меня есть CheckListBox в c #, и я пытаюсь вызвать событие всякий раз, когда изменяется одно из контрольных состояний в поле. Цель события - изменить RichTextBox.

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

    private void clbAllRooms_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        //If the checkstate changed, update price  
        //It updates price only when the state turns from Checked to Uncheck
        if (e.NewValue != e.CurrentValue)
            Update_rtbPrice();
    }

1 Ответ

1 голос
/ 16 января 2012

Проблема, без сомнения, находится в вашем методе Update_rtbPrice ().Чтобы сделать что-то осмысленное, нужно вызвать метод GetItemChecked () окна списка, и это проблема, когда вы вызываете метод из обработчика события.Состояние проверки элемента не изменяется до после , когда выполняется событие.

Обходной путь - отложить вызов, чтобы он выполнялся после обновления состояния элемента управления.Как это:

    private void clbAllRooms_ItemCheck(object sender, ItemCheckEventArgs e) {
        this.BeginInvoke(new MethodInvoker(() => Update_rtbPrice()));
    }
...