zoukankan      html  css  js  c++  java
  • NET 2.0中WinForm自定义的程序配置文件Settings.setting使用方法

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

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

    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目录了。

  • 相关阅读:
    离散数学--第十章 群,环,域
    离散数学--十一章 格与布尔代数
    matplotlib 基础|笔记
    CF Round #632 div2
    Codeforces Round#630 div2
    PVZ 2--攻略合集?
    【POJ
    【POJ
    【Aizu
    【Aizu
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/dfdfdsfdsfsfd.html
Copyright © 2011-2022 走看看