如何在表单中编辑和保存设置?

How to edit and save settings in a Form?

我有一个包含多个文本框、单选按钮、复选框等的表单。现在我通过声明每个值并保存到程序设置来分别保存它们的值:

Properties.Settings.Default.EmailFrom = txtbxEmailFrom.Text;

我想找到一种方法来遍历所有对象并尽可能保存它们的设置,这样我就不必单独声明每个对象。

有办法吗?或者更好的方法来保存我的文本框的文本、复选框和单选按钮的检查状态等?

这样做的一种方法是遍历所有控件,并在每次迭代中检查当前控件的类型并相应地保存。但是我不太确定您可以对 RadioButtons/CheckBoxes.

做些什么
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...
 }

您可以使用property binding应用程序设置。

这样您可以通过调用 Properties.Settings.Default.Save(); 简单地保存设置并且您不需要循环控制,因为属性绑定到设置并且它们的值在更改时自动推送到设置中。

您可以使用设计器或代码将属性绑定到设置。

使用设计器

select 您在设计时的控件,然后在 属性 网格中,在 (ApplicationSettings) 下单击 ... for (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 来显示所有设置并进行编辑。

更多信息: