NET 2.0中WinForm自定义的程序配置存放到哪里去了

.NET 2.0中,WinForm应用程序的配置已经非常方便。默认情况下,我们可以利用Properties文件夹里默认的Settings.setting文件进行Application和User两个层级配置信息的设置。在Settings.setting里进行的修改保存后,均自动在后部cs文件里自动生成相关代码,同时在应用程序配置文件(app.config)里存储相关信息。比如,我们在TestWinForm项目里对Settings.setting进行如下修改:

NET 2.0中WinForm自定义的程序配置存放到哪里去了

保存后,Settings.Designer.cs文件自动增加如下代码:


 1namespace TestWinForm.Properties {
 2    
 3    
 4    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
 5    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator""8.0.0.0")]
 6    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
 7        
 8        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
 9        
10        public static Settings Default {
11            get {
12                return defaultInstance;
13            }

14        }

15        
16        [global::System.Configuration.ApplicationScopedSettingAttribute()]
17        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
18        [global::System.Configuration.DefaultSettingValueAttribute("localhost")]
19        public string Server {
20            get {
21                return ((string)(this["Server"]));
22            }

23        }

24        
25        [global::System.Configuration.ApplicationScopedSettingAttribute()]
26        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
27        [global::System.Configuration.DefaultSettingValueAttribute("2121")]
28        public int Port {
29            get {
30                return ((int)(this["Port"]));
31            }

32        }

33        
34        [global::System.Configuration.UserScopedSettingAttribute()]
35        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
36        [global::System.Configuration.DefaultSettingValueAttribute("brooks")]
37        public string UserName {
38            get {
39                return ((string)(this["UserName"]));
40            }

41            set {
42                this["UserName"= value;
43            }

44        }

45        
46        [global::System.Configuration.UserScopedSettingAttribute()]
47        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
48        [global::System.Configuration.DefaultSettingValueAttribute("2006-05-01")]
49        public global::System.DateTime CreateDate {
50            get {
51                return ((global::System.DateTime)(this["CreateDate"]));
52            }

53            set {
54                this["CreateDate"= value;
55            }

56        }

57    }

58}

同时,app.config也发生了变化:

 1 <? xml version="1.0" encoding="utf-8"  ?>
 2 < configuration >
 3      < configSections >
 4          < sectionGroup  name ="applicationSettings"  type ="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"   >
 5              < section  name ="TestWinForm.Properties.Settings"  type ="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  requirePermission ="false"   />
 6          </ sectionGroup >
 7          < sectionGroup  name ="userSettings"  type ="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"   >
 8              < section  name ="TestWinForm.Properties.Settings"  type ="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  allowExeDefinition ="MachineToLocalUser"  requirePermission ="false"   />
 9          </ sectionGroup >
10      </ configSections >
11      < applicationSettings >
12          < TestWinForm .Properties.Settings >
13              < setting  name ="Server"  serializeAs ="String" >
14                  < value > localhost </ value >
15              </ setting >
16              < setting  name ="Port"  serializeAs ="String" >
17                  < value > 2121 </ value >
18              </ setting >
19          </ TestWinForm.Properties.Settings >
20      </ applicationSettings >
21      < userSettings >
22          < TestWinForm .Properties.Settings >
23              < setting  name ="UserName"  serializeAs ="String" >
24                  < value > brooks </ value >
25              </ setting >
26              < setting  name ="CreateDate"  serializeAs ="String" >
27                  < value > 2006-05-01 </ value >
28              </ setting >
29          </ TestWinForm.Properties.Settings >
30      </ userSettings >
31 </ configuration >

要在具体代码中使用配置信息就非常非常的方便了。

1          private   void  button1_Click( object  sender, EventArgs e)
2          {
3            string msg = TestWinForm.Properties.Settings.Default.Server + ":" + TestWinForm.Properties.Settings.Default.Port.ToString();
4            MessageBox.Show(msg);
5        }

OK,鬼扯了这么多,用意在于让我们再熟悉下.NET2.0的配置。现在,我们不满足他所提供的默认配置,于是我们创建了自己的一个Demo用的配置类 FtpSetting。在WinForm应用程序里,一切配置类都得继承自 ApplicationSettingsBase 类。

 1      sealed   class  FtpSettings : ApplicationSettingsBase
 2      {
 3        [UserScopedSetting]
 4        [DefaultSettingValue("127.0.0.1")]
 5        public string Server
 6        {
 7            get return (string)this["Server"]; }
 8            set this["Server"= value; }
 9        }

10
11        [UserScopedSetting]
12        [DefaultSettingValue("21")]
13        public int Port
14        {
15            get return (int)this["Port"]; }
16            set this["Port"= value; }
17        }

18    }

如果要使用上述配置类,可以用:

1          private   void  button2_Click( object  sender, EventArgs e)
2          {
3            FtpSettings ftp = new FtpSettings();
4
5            string msg = ftp.Server + ":" + ftp.Port.ToString();
6            MessageBox.Show(msg);
7        }

好,似乎还在鬼扯。这个Tip已经进入尾声了,主题正式登场。:) 我们在使用上述 FtpSetting 配置时,当然要先进行赋值保存,然后再使用,后面再修改,再保存,再使用。
 1          private   void  button2_Click( object  sender, EventArgs e)
 2          {
 3            FtpSettings ftp = new FtpSettings();
 4            ftp.Server = "ftp.test.com";
 5            ftp.Port = 8021;
 6
 7            ftp.Save();
 8            ftp.Reload();
 9
10            string msg = ftp.Server + ":" + ftp.Port.ToString();
11            MessageBox.Show(msg);
12        }

嗯。已经Save了,你可能会在应用程序文件夹里找不到它到底保存到哪里去了。由于我们是用UserScope的,所以其实该配置信息是保存到了你的Windows的个人文件夹里去了。比如我的就是 C:\Documents and Settings\brooks\Local Settings\Application Data\TestWinForm目录了。哈~当作Tip吧,免得大伙一时找不到Save后的配置文件。

你可能感兴趣的:(WinForm)