繁体   English   中英

当CheckListBox中的任何CheckState值更改时如何触发事件

[英]How to trigger an event when any of CheckState values in CheckListBox is changed

我在c#中有一个CheckListBox,并且尝试更改框中的其中一个checkstate时触发事件。 该事件的目的是更改一些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();
    }

毫无疑问,该问题位于您的Update_rtbPrice()方法中。 它必须调用列表框的GetItemChecked()方法来做有意义的事情,这是从事件处理程序进行方法调用时遇到的问题。 直到事件运行 ,项目检查状态才会更改。

一种解决方法是延迟调用,使其在控件状态更新后运行。 像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM