如何在窗体中编辑和保存设置
本文关键字:保存 设置 编辑 窗体 | 更新日期: 2023-09-27 18:28:07
我有一个表单,它包含几个文本框、单选按钮、复选框等。现在我通过声明每个值并保存到程序设置来分别保存它们的值:
Properties.Settings.Default.EmailFrom = txtbxEmailFrom.Text;
如果可能的话,我想找到一种方法来遍历所有对象并保存它们的设置,这样我就不必单独声明每个对象。
有办法做到这一点吗?或者一个更好的方法来保存我的文本框的文本,复选框的checkstate&单选按钮等?
您可以使用属性绑定到应用程序设置。
通过这种方式,您可以通过调用Properties.Settings.Default.Save();
来简单地保存设置,并且不需要在控件上循环,因为属性绑定到设置,并且它们的值在更改时会自动推送到设置中。
可以使用设计器或代码将属性绑定到设置。
使用设计器
在设计时选择控件,然后在属性网格中,在"(ApplicationSettings)
"下,单击"(PropertyBinding)
"对应的"...
",然后从对话框中将所需的属性绑定到设置。
使用代码
您可以使用代码将属性绑定到设置,方法与使用代码进行数据绑定时相同:
this.textBox1.DataBindings.Add(
new System.Windows.Forms.Binding("Text", Properties.Settings.Default, "Test", true,
DataSourceUpdateMode.OnPropertyChanged));
保存设置
为了保存设置,在设置对象上调用Save()
就足够了,比如形式为的Closing
事件
Properties.Settings.Default.Save();
注意
作为不同设置控件的替代方案,您还可以使用PropertyGrid
来显示所有设置并对其进行编辑。
更多信息:
- 如何:在设计时创建新设置
- 如何:使用C在运行时读取设置#
- 如何:使用C在运行时编写用户设置#
实现这一点的一种方法是遍历所有控件,并在每次迭代中检查当前控件的类型并相应地保存。然而,我不太确定你能对单选按钮/复选框做些什么。
foreach (var c in this.Controls)
{
var _type = c.GetType();
if (_type == typeof(TextBox))
{
// Cast it to a textbox and save it's text property
}
elseif (_type == typeof(ListBox)
{
// Cast it to a listbox and save it's items property
}
// So on...
}