C# 复选框未正确读取设置

C# 复选框未正确读取设置,c#,checkbox,settings,C#,Checkbox,Settings,问题是: 在我的设置中,有两个布尔值,分别称为check1_状态和check2_状态。当窗体加载时,它们应该控制我的两个复选框 以下是表单加载时的代码: checkBox1.Checked = Properties.Settings.Default.check1_State; checkBox2.Checked = Properties.Settings.Default.check2_State; 有了这段代码,将只读取复选框1。如果我评论第一行,第二行就可以了 我设法让它工作,以便在窗体加

问题是:

在我的设置中,有两个布尔值,分别称为check1_状态和check2_状态。当窗体加载时,它们应该控制我的两个复选框

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

checkBox1.Checked = Properties.Settings.Default.check1_State;
checkBox2.Checked = Properties.Settings.Default.check2_State; 
有了这段代码,将只读取复选框1。如果我评论第一行,第二行就可以了

我设法让它工作,以便在窗体加载时放置计时器,但我希望做得正确。这表明复选框实际上可以读取设置,但如果同时请求两个或多个设置,则显然不起作用


知道为什么会发生这种情况吗?

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

bool flag = false;
仅当上述标志为真时,才保存check1_状态和check2_状态

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

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

您是否正在检查已更改的事件处理程序中写入设置?我是。同样,如果.Checked=.check1_状态;是在计时器中使用的,如果将其输入到表单中,它就不起作用。加载处理程序。将调试好的放置在checkBox2上。Checked=Properties.Settings.Default.check2_状态;并查看状态设置是否正确。如果设置正确,则应注册checkbox2的选中更改事件。查看设置后从何处更改。我怀疑它在你的代码中的其他地方被更改了。工作起来很有魅力!非常感谢你。