【问题标题】:Saving user settings [winforms] 2.0 not working保存用户设置 [winforms] 2.0 不起作用
【发布时间】:2014-07-04 09:38:59
【问题描述】:

我有一个代码段来保存用户关闭表单时将运行的复选框状态。一切运行良好,但没有生成保存文件(没有生成 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();
    }

【问题讨论】:

标签: c# winforms settings


【解决方案1】:

按照建议,您不要在运行时创建设置并保存它们。这些设置必须已经存在,您只需保存它们的值。在项目属性的设置页面中添加适当类型的设置,然后在启动时获取该设置的值并在关闭时保存。

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

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

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

【讨论】:

  • 谢谢,我想我明白了
猜你喜欢
  • 2021-08-23
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 2016-03-20
  • 2010-09-30
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
相关资源
最近更新 更多