复选框无法正确读取设置

时间:2013-07-03 10:49:38

标签: c# checkbox settings

问题在于:

在我的设置中,我有两个布尔名为" check1_State"和" check2_State"。每当表单加载时,它们都应该控制我的两个复选框。

这是表单加载时的代码:

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

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

我设法让它在表单加载时放置一个Timer,但我想这样做。这表明复选框实际上可以从设置中读取,但显然如果同时请求两个或更多,则它不起作用。

有关为何发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

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

bool flag = false;

如果以上标志为 check1_State

,则仅保存check2_Statetrue

在表单加载事件中,在从属性

加载数据后设置标志
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;
    }
}