如何防止值更改事件触发在.NET中的表单初始化?

考虑一个简单的.NET表单与几个单选按钮和一个复选框。

每个单选按钮都有一个CheckedChanged处理程序设置,它根据复选框的状态执行一些操作。

我的问题是,当我初始化默认的单选按钮被检查(从设计器属性窗口)CheckedChanged事件触发该单选按钮,但复选框尚未初始化,所以我得到一个空指针异常或处理程序中使用错误的值。无论哪种方式,我不希望运行处理程序代码,除非用户在表单加载后选择一个单选按钮。

我现在通过不初始化单选按钮来解决这个问题,但是我最终需要设置默认值,最好的地方就是设计器。我还可以添加一个布尔字段,它不会被设置为true,直到窗体完全加载,如果该值为false,则不会处理该事件,但它是一个脏的黑客。

我可以做些什么来防止该处理程序运行其代码?

“我也可以,但是一个布尔型字段,在表单完全加载之前并未设置为true,如果该值为false,则不会处理该事件,但这是一个脏的黑客。

这也是最简单和最好的方法!

让我们说.NET提供了一种简单的方式来转换和关闭所有的事件处理程序,直到加载表单。即使只是你正在处理的那些。禁用您想要启用的功能仍然没有足够的灵活性,但是禁用了您没有启用的功能。通常表单设置发生,您希望事件触发。如果没有事件发生,表单也不会建立正确的。

翻译自:https://stackoverflow.com/questions/3150882/how-to-prevent-value-changed-events-from-firing-on-form-initialization-in-net

转载注明原文:如何防止值更改事件触发在.NET中的表单初始化?