现在的位置: 首页 > 综合 > 正文

[转]C# 应用程序设置

2012年11月11日 ⁄ 综合 ⁄ 共 3159字 ⁄ 字号 评论关闭

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 //获取值
2 label1.Text = Properties.Settings.Default.mySet;
3 label2.Text = Properties.Settings.Default.myApp;
4 //修改值,只能修改User范围的。
5 Properties.Settings.Default.mySet = "test1111";
6 Properties.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的操作合并成了一个类方便调用。

01 using System;
02 using System.Collections.Generic;
03 using System.Text;
04 using System.Configuration;
05   
06 //注意需要引用 System.Configuration
07   
08 public 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     {

抱歉!评论已关闭.