所以这个问题真的很简单。我有一个checkedListBox,在ItemCheck 上我想调用我的方法UpdateGraph()。问题是,如果我在事件中调用它,它会在项目被视为检查之前运行 UpdateGraph 方法。由于更新图方法使用了一个 foreach(checkListBox.CheckedItems 中的 var 项),因此是否已经应用了新的已检查值,这一点很重要。
我通过手动设置事件中的新值尝试了一种解决方法,但这给了我一个 StackOverflowException。
private void checkedListBox3_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
checkedListBox3.SetItemChecked(e.Index, true);
}
else
{
checkedListBox3.SetItemChecked(e.Index, false);
}
UpdateChart();
}
它给了我 SetItemChecked 所在行的异常。重申一下,我希望在 UpdateChart() 之前检查该项目,而仅调用 UpdateChart() 似乎并没有这样做。有没有人有任何变通方法可以在项目进入 UpdateChart() 方法之前对其进行检查?
编辑:谢谢,我现在明白为什么我现在得到 StackOverflowException,但是无论如何要确保该项目采用新的 CheckState 而无需手动将其传递给我的 UpdateGraph 方法?它是一种通用方法,不会总是通过我的 checkedListBox3_itemCheck 事件,因此传入 newCheckstate 可能会使事情复杂化。请注意,我可以只使用 If 来检查我传入的值并使用某种标识符来确定是否需要使用它,但如果我在进入之前找不到任何其他东西来更新检查状态,这可能是我的最后一个解决方案方法。