[英]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.