我有一个包含多个文本框,单选按钮,复选框等的表单。现在我分别通过声明每个值并保存到程序设置来保存它们的值:
while
我想找到一种循环遍历所有对象并尽可能保存其设置的方法,因此我不必单独声明每个对象。
有办法做到这一点吗?或者更好的方法来保存我的文本框的文本,复选框的检查状态和& radiobuttons等?
答案 0 :(得分:4)
您可以使用property binding进行应用程序设置。
这样您只需调用Properties.Settings.Default.Save();
即可保存设置,并且不需要循环控件,因为属性绑定到设置,其值会在更改时自动进入设置。
您可以使用设计器或使用代码将属性绑定到设置。
使用Designer
在设计时选择您的控件,然后在属性网格中,(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
显示所有设置并进行编辑。
答案 1 :(得分:1)
这样做的一种方法是循环遍历所有控件,并在每次迭代中检查当前控件的类型并相应地保存。但是,我不太清楚你可以对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...
}