我正在构建一个应用程序,该应用程序具有用户可以在其中配置所有设置的表单。加载应用程序时,以前配置的设置应反映到 GUI(UI 应与保存的设置一致)。
我目前正在做的是在项目属性上创建设置,我有一个LoadSettings()
方法,该方法获取值并将其输出到 UI 上的每个组件。
问题是这变得非常混乱,我一点也不喜欢它。
所以,这让我想知道,什么是正确的方法来实现我想要的,但又能获得高质量的代码?有什么模式吗?
private void LoadConfigs()
{
checkBoxStartOnStartup.Checked = ExistKeyValue(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", "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();
}
好吧,WinForms 并不是最干净的框架......
您可以做的是在应用程序启动时加载所有设置,并将它们存储在可用于所有表单的某些存储中,例如在帮助程序设置类中的静态属性中。
然后,您可以在加载每个窗体时从每个窗体访问该静态属性,并根据设置对窗体进行所有必要的更改。
您可以使用 Hashtable 并使用英语字符串作为键,以使您的代码真正可读。然后将其序列化为退出时的文件,并在应用程序加载时反序列化。将序列化文件保存到某个公共位置,以免丢失它。