我正在构建一个应用程序,其中包含一个用户可以配置其所有设置的表单。加载应用程序时,先前配置的设置应反映到GUI(UI应与保存的设置保持一致)。
我目前正在做的是在项目属性上创建设置,我有一个LoadSettings()
方法,它获取值并将它们输出到UI上的每个组件。
事情是,这变得非常混乱,我完全不喜欢它。
所以,这让我想知道,实现我想要的东西的正确方法是什么,但却获得了高质量的代码?有什么模式吗?
private void LoadConfigs()
{
checkBoxStartOnStartup.Checked = ExistKeyValue(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Wallbase Downloader");
checkBoxCheckWallbaseOnline.Checked = Settings.Default.CheckWallbaseOnlineStartup;
comboBoxResolution.SelectedIndex = comboBoxResolution.FindStringExact(Settings.Default.Resolution == string.Empty
? GetScreenResolution()
: Settings.Default.Resolution);
comboBoxCondition.SelectedIndex = Settings.Default.ConditionIndex;
textBoxWallpaperFolders.Text = Settings.Default.WallpaperFolder;
numericChangeInterval.Text = Convert.ToString(Settings.Default.ChangeIntervalValue);
comboBoxChangeInterval.SelectedIndex = Settings.Default.ChangeIntervalIndex;
numericCheckInterval.Text = Convert.ToString(Settings.Default.CheckIntervalValue);
comboBoxCheckInterval.SelectedIndex = Settings.Default.CheckIntervalIndex;
numericWallpapersToLookFor.Text = Settings.Default.WallpapersToLookFor.ToString();
}
答案 0 :(得分:2)
嗯,WinForms并不是最简洁的框架......
您可以执行的操作是在应用程序启动时加载所有设置,并将其存储在可用于所有表单的某个存储中,例如:在辅助设置类的静态属性中。
然后,您可以在加载时从每个表单访问该静态属性,并根据设置对表单进行所有必要的更改。
答案 1 :(得分:0)
您可以使用Hashtable并使用英文字符串作为密钥,以使您的代码真正可读。然后serialize将其退出并在应用程序加载时deserialize返回。将序列化文件保存到某些common location,这样就不会丢失它。