所以基本过观点是弹出显示,用户检查一些箱子,关闭表单,并保存更改吗?
第一个问题:如果您只是保存控件的当前状态(选中,未选中等),为什么还要处理CheckedChange事件?为什么不直接保存Form.FormClosing事件中的所有控件值?我的意思是我明白改变的事件被调用是因为你在表单加载事件中设置了值控件,但是为什么还要改变事件,除非你在更改事件被触发时做了某些事情?
如果你真的想使用CheckedChange事件虽然以执行一些动作,那么你可以使用一个计数器像这样(我的头代码顶部,这样可能会有点越野车):
private int _loadCount;
private void Form1_Load(object sender, System.EventArgs e)
{
_loadCount = 0;
//Code to load values for controls...
}
private void CheckBox1_CheckedChanged(Object sender, EventArgs e)
{
_loadCount++;
if(_loadCount > 1)
{
//Do something here...
}
else
{
//Do nothing, return false, etc...
}
}
在任何情况下,AFAIK无论控件值如何更改(用户单击,通过代码等),控件更改事件始终会触发。
来源
2014-01-09 04:38:33
Tom
更好的希望在中间设置该变量异步发生。否则,该标志将变得毫无用处。 –
@ M.Babcock你是对的,但他只是从文件中读取数据并设置控件的值。应该是安全的。 –
@Grant:我试过你的解决方案,它工作的很好,只需要对代码做很少的修改。竖起大拇指。 – PeteD