保存用户设置[winforms] 2.0不起作用

时间:2014-07-04 09:38:59

标签: c# winforms settings

我有一个代码段来保存当用户关闭表单时将运行的复选框的状态。一切运行正常,但没有生成保存文件(user.config文件没有生成)。这是我第一次使用保存设置,所以我不确定我是做错了还是错过了什么。

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        int i = 0;
        foreach (Control ctr in panel1.Controls)
        {
            if (ctr is CheckBox)
            {
                var cb = (CheckBox)ctr;

                SettingsProperty property = new SettingsProperty("ChkState" + i);
                property.PropertyType = typeof(System.Windows.Forms.CheckState);
                SettingsPropertyValue propertyValue = new SettingsPropertyValue(property);
                propertyValue.PropertyValue = cb.CheckState;
                Properties.Settings.Default.PropertyValues.Add(propertyValue);
                i++;
            }
        }

        Properties.Settings.Default.Save();
    }

1 个答案:

答案 0 :(得分:1)

根据建议,您不能在运行时创建设置并保存它们。设置必须已存在,您只需保存其值。在项目属性的“设置”页面中添加适当类型的设置,然后在启动时获取该设置的值,并在关闭时保存。

您使用CheckState而不是Checked的具体原因是什么?您的CheckBox控件是否可以处于Indeterminate状态?如果没有,那么您根本不应该使用CheckState。您可以使用Checked来确定是否选中了框。

如果您可以使用Checked,则可以使用单个int来存储最多32个CheckBox控件的状态。每个32位可以是1来表示true,即检查,或0来表示false,即未选中。

当然,您也可以使用bool类型的单个设置,并将它们绑定到您的Checked属性。这样,就不需要在设置和控件之间来回移动数据。你只需在关机时调用Save,其他一切都会自动发生。