天堂的狼

更好的生活,来自不懈的努力与拼搏,不要仅仅看中结果,拼搏的过程同样是精彩的!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

C# 应用程序设置

官方参考:http://msdn.microsoft.com/zh-cn/library/k4s6c3a0(v=VS.80).aspx

使用VS自带的应用程序设置功能

  • 创建项目
  • 选择菜单 [项目] > [属性] 
  • 选择 [设置]

就可手动添加应用程序设置了。

添加成功后,系统会自动生成App.config文件。

01<?xml version="1.0" encoding="utf-8"?>
02<configuration>
03    <userSettings>
04        <WindowsApplication5.Properties.Settings>
05            <setting name="mySet" serializeAs="String">
06                <value>testSet_828</value>
07            </setting>
08            <setting name="FormTitle" serializeAs="String">
09                <value>FormTestdddd</value>
10            </setting>
11        </WindowsApplication5.Properties.Settings>
12    </userSettings>
13</configuration>

关于User和Application的区别

  • Application 不允许在程序中更新设置。只能手动更改App.config或到项目属性的设置中更改。
  • User 允许在程序中更改设置。

VS也提供了一种直接在窗体控件属性的ApplicationSettings 里设置关联应用程序的快捷方法。

以下列举了使用VS自带应用程序应注意的地方

  • 如果范围是Application时,在程序此值时只读的。只能通过修改App.config的对应项来更改。
  • 如果范围是User,并且在程序未对此值做修改时,修改App.config对应项,在程序访问时当前值为App.config中设置的值。
  • 如果范围是User,并且在程序中对此值进行了修改,App.config中记录的还会是老值,并且以后的App.config此项设置将无效。

那到底User修改后的值系统在什么地方存这呢?

经过测试是在C:\Documents and Settings\Administrator\Local Settings\Application Data\Phook\WindowsApplication5.exe_Url_nlwmvagksxwiigfpn5ymssyrjtyn22ph\1.0.0.0\user.config

下存着,如果更改以上App.config则程序将取到新值。很奇怪,微软为什么要弄的怎么复杂。

在程序中使用

1//获取值
2label1.Text = Properties.Settings.Default.mySet;
3label2.Text = Properties.Settings.Default.myApp;
4//修改值,只能修改User范围的。
5Properties.Settings.Default.mySet = "test1111";
6Properties.Settings.Default.Save();

总结

  • 应该是如果选择范围是User时,此设置是用户级别的。使用不同用户登录后运行程序取的值是不一样的。
  • 并且如果程序修改了名称,各自会拥有另一套App.config。
  • 而Application是应用程序级的,任何打开相同程序的Application都会一样。

自定义App.config

可能你想要一个Config可以功能和Application范围一样,但有同时支持程序修改。以下是实现方法

创建工程

手动添加App.config

格式如下:

1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3    <appSettings>
4        <add key="y" value="this is Y"/>      
5    </appSettings>
6</configuration>

引用 System.Configuration


把对App.config的操作合并成了一个类方便调用。

01using System;
02using System.Collections.Generic;
03using System.Text;
04using System.Configuration;
05  
06//注意需要引用 System.Configuration
07  
08public class AppConfig
09{
10    private static Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
11  
12    /// <summary>
13    /// 获取
14    /// </summary>
15    /// <param name="key"></param>
16    /// <returns></returns>
17    public static string GetValue(string key)
18    {
19        string strReturn = null;
20        if (config.AppSettings.Settings[key] != null)
21        {
22            strReturn = config.AppSettings.Settings[key].Value;
23        }
24        return strReturn;
25    }
26  
27    /// <summary>
28    /// 设置
29    /// </summary>
30    /// <param name="key"></param>
31    /// <param name="value"></param>
32    public static void SetValue(string key, string value)
33    {
34        if (config.AppSettings.Settings[key] != null)
35        {
36            config.AppSettings.Settings[key].Value = value;
37        }
38        else
39        {
40            config.AppSettings.Settings.Add(key, value);
41        }
42        config.Save(ConfigurationSaveMode.Modified);
43    }
44  
45    /// <summary>
46    /// 删除
47    /// </summary>
48    /// <param name="key"></param>
49    public static void DelValue(string key)
50    {
51        config.AppSettings.Settings.Remove(key);
52    }
53}

使用方法

1//修改或添加
2AppConfig.SetValue("dtNow", DateTime.Now.Millisecond.ToString());
3//获取
4label1.Text = AppConfig.GetValue("dtNow");

 

示例代码下载:https://files.cnblogs.com/zjfree/AppConfig.rar

 

posted on 2011-07-25 10:20  天堂的狼  阅读(315)  评论(0编辑  收藏  举报