将WinForms设置加载到GUI的适当方法是什么

时间:2014-01-07 01:06:15

标签: c# .net winforms user-interface application-settings

我正在构建一个应用程序,其中包含一个用户可以配置其所有设置的表单。加载应用程序时,先前配置的设置应反映到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();
        }

2 个答案:

答案 0 :(得分:2)

嗯,WinForms并不是最简洁的框架......

您可以执行的操作是在应用程序启动时加载所有设置,并将其存储在可用于所有表单的某个存储中,例如:在辅助设置类的静态属性中。

然后,您可以在加载时从每个表单访问该静态属性,并根据设置对表单进行所有必要的更改。

答案 1 :(得分:0)

您可以使用Hashtable并使用英文字符串作为密钥,以使您的代码真正可读。然后serialize将其退出并在应用程序加载时deserialize返回。将序列化文件保存到某些common location,这样就不会丢失它。