所以,我有一个名为Preferences的Form,其中包含TabControl
。此TabControl
包含多个TabPages
(常规,高级,其他,...),其中包含很少的组合框,复选框和标签。 TabPage中的每个控件都分配了应用程序设置属性绑定(也就是说它们显示已保存的用户设置,用户可以更改它们等等)。
我知道有一种方法可以重置所有设置(Properties.Settings.Default.Reset();
),但有没有办法只重置一个TabPage
内的设置?
我的解决方案是在TabPage中通过控件迭代,检查它是否是组合框,标签等,然后将其值重置为默认值,但是有一个“oneliner”解决方案吗?
答案 0 :(得分:0)
TabPage page = aTabControl.SelectedTab;
var controls = page.Controls;
foreach (var control in controls)
{
//do stuff
}
答案 1 :(得分:0)
试试这个:
private void button2_Click(object sender, EventArgs e)
{
TabPage page = tabControl1.SelectedTab;
var controls = page.Controls;
foreach (var control in controls)
{
if(control is TextBox)
{
//do stuff
}
if(control is ComboBox )
{
ComboBox comboBox = (ComboBox)control;
if (comboBox.Items.Count > 0)
comboBox.SelectedIndex = 0;
comboBox.Text = string.Empty;
}
}
}
答案 2 :(得分:0)
ApplicationSettings
没有内置支持来重置某些属性。但要解决此问题,您可以使用以下任一选项:
创建一个方法,重置TabPage
使用支持Designer的多个设置文件
您可以创建一个查看标签页控件的方法,并检查它是否与应用程序设置绑定,在设置中查找属性并将其值重置为默认值。然后,您可以重置TebPage
宽度一行代码的设置:ResetSettings(tabPage1);
。
以下是方法:
private void ResetSettings(TabPage tabPage)
{
foreach (Control c in tabPage.Controls)
{
foreach (Binding b in c.DataBindings)
{
if (b.DataSource is ApplicationSettingsBase)
{
var settings = (ApplicationSettingsBase)b.DataSource;
var key = b.BindingMemberInfo.BindingField;
var property = settings.Properties[key];
var defaultValue = property.DefaultValue;
var type = property.PropertyType;
var value = TypeDescriptor.GetConverter(type).ConvertFrom(defaultValue);
settings[key] = value;
//You can also save settings
settings.Save();
}
}
}
}
如果使用单个设置文件的原因是设计人员支持,您应该知道您也可以使用多个设置文件获得设计器支持。然后,您可以使用不同的设置文件并分别重置每个设置组。您可以使用以下代码将它们封装在一个类中:
public static class MySettings
{
public static Sample.General General
{
get { return Sample.General.Default; }
}
public static Sample.Advanced Advanced
{
get { return Sample.Advanced.Default; }
}
public static void ResetAll()
{
General.Reset();
Advanced.Reset();
}
public static void SaveAll()
{
General.Save();
Advanced.Save();
}
}
要重置设置组,只需拨打MySettings.General.Reset();
要重置所有设置,您可以拨打MySettings.ResetAll();
请注意设计时支持
要让设计器支持将属性绑定到设置,请在项目的根目录中创建多个设置文件。不要将设置文件放在文件夹中。设置选择器只显示Settings.settings
文件夹中的Properties
文件和项目根目录下的文件。这样,您可以在树视图中看到不同的设置文件和设置属性,如下所示: