复选框不';无法正确读取设置

本文关键字:读取 设置 复选框 | 更新日期: 2023-09-27 18:20:59

问题如下:

在我的设置中,我有两个布尔值,叫做"check1_State"answers"check2_State"。他们应该在表单加载时控制我的两个复选框。

以下是加载表单时的代码:

checkBox1.Checked = Properties.Settings.Default.check1_State;
checkBox2.Checked = Properties.Settings.Default.check2_State; 

使用这段代码,将只读取checkBox1。如果我评论第一行,第二行就可以了。

我设法让它在表单加载时放置计时器,但我想做正确的事情。这表明复选框实际上可以从设置中读取,但如果同时请求两个或多个复选框,显然就不起作用了。

你知道为什么会发生这种事吗?

复选框不';无法正确读取设置

您可以使用表单级标志来保持加载初始数据的状态

bool flag = false;

如果上述标志为true,则仅保存check1_Statecheck2_State

在表单加载事件中,从属性加载数据后设置标志

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;
    }
}