我有一个代码段来保存当用户关闭表单时将运行的复选框的状态。一切运行正常,但没有生成保存文件(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();
}
答案 0 :(得分:1)
根据建议,您不能在运行时创建设置并保存它们。设置必须已存在,您只需保存其值。在项目属性的“设置”页面中添加适当类型的设置,然后在启动时获取该设置的值,并在关闭时保存。
您使用CheckState
而不是Checked
的具体原因是什么?您的CheckBox
控件是否可以处于Indeterminate
状态?如果没有,那么您根本不应该使用CheckState
。您可以使用Checked
来确定是否选中了框。
如果您可以使用Checked
,则可以使用单个int
来存储最多32个CheckBox
控件的状态。每个32位可以是1来表示true
,即检查,或0来表示false
,即未选中。
当然,您也可以使用bool
类型的单个设置,并将它们绑定到您的Checked
属性。这样,就不需要在设置和控件之间来回移动数据。你只需在关机时调用Save
,其他一切都会自动发生。