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



保存后,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后的配置文件。
posted on 2007-02-28 18:40  冷火  阅读(1177)  评论(2编辑  收藏  举报