问题在于:
在我的设置中,我有两个布尔名为" check1_State"和" check2_State"。每当表单加载时,它们都应该控制我的两个复选框。
这是表单加载时的代码:
checkBox1.Checked = Properties.Settings.Default.check1_State;
checkBox2.Checked = Properties.Settings.Default.check2_State;
使用那段代码,只会读取checkBox1。如果我评论第一行,第二行就可以了。
我设法让它在表单加载时放置一个Timer,但我想这样做。这表明复选框实际上可以从设置中读取,但显然如果同时请求两个或更多,则它不起作用。
有关为何发生这种情况的任何想法?
答案 0 :(得分:0)
您可以使用表单级别标志来保持加载初始数据的状态
bool flag = false;
如果以上标志为 check1_State
check2_State
和true
在表单加载事件中,在从属性
加载数据后设置标志checkBox1.Checked = Properties.Settings.Default.check1_State;
checkBox2.Checked = Properties.Settings.Default.check2_State;
flag = true;
示例:
public partial class Form1 : Form
{
bool flag = false;
public Form1()
{
InitializeComponent();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (flag)
{
//save settings
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (flag)
{
//save settings
}
}
private void Form1_Load(object sender, EventArgs e)
{
checkBox1.Checked = Properties.Settings.Default.check1_State;
checkBox2.Checked = Properties.Settings.Default.check2_State;
flag = true;
}
}