如何在窗体中编辑和保存设置

本文关键字:保存 设置 编辑 窗体 | 更新日期: 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...
 }