如何在CheckListBox中的任何CheckState值发生更改时触发事件
本文关键字:事件 CheckState CheckListBox 任何 | 更新日期: 2023-09-27 18:20:37
我在c#中有一个CheckListBox,每当框中的一个检查状态发生更改时,我都会尝试触发一个事件。事件的目的是更改一些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()));
}