摘自:http://edu.admin5.com/article/20110124/0124431N2011.shtml

C# 应用程序设置

来源: 字体:[ 大 中 小]

C# 应用程序设置

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

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

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

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

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

view source print ?
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则程序将取到新值。很奇怪,微软为什么要弄的怎么复杂。

在程序中使用

view source print ?
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

格式如下:

view source print ?
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的操作合并成了一个类方便调用。

view source print ?
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     {
51         config.AppSettings.Settings.Remove(key);
52     }
53 }

使用方法

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

转载于:https://www.cnblogs.com/85538649/archive/2011/09/09/2172744.html

window setting.settings 详解。相关推荐

  1. 1.16.Flink Window和Time详解、TimeWindow的应用、Window聚合分类之全量聚合、全量聚合状态变化过程-求最大值、Time介绍、EventTime和Watermarks等

    1.16.Flink Window和Time详解 1.16.1.Window(窗口) 1.16.2.Window的类型 1.16.3.Window类型汇总 1.16.4.TimeWindow的应用 1 ...

  2. js基础 -- window.btoa和window.atob使用详解.md

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 定义 atob() 解码一个Base64字符串. btoa() 从一个字符串或者二进制数据编码一个Base64字符串. 用法 只 ...

  3. linux 弹出窗口,实现弹出窗口的window.open用法详解(js代码)

    实现弹出窗口的window.open用法详解(js代码) [1.最基本的弹出窗口代码] 其实代码非常简单: 因为这是一段javascripts代码,所以它们应该放在 cript">标签 ...

  4. window.onload用法详解

    网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本代码放在网页的底端,这样在运行脚本代 ...

  5. Run time setting设置详解

    Pacing转载自belie 1>     Run time setting设置中的Browser:'Simulate a new user on each iteration'选项 例如:录制 ...

  6. clickhouse配置项system.settings详解

    调研学习clickhouse,上一章介绍了clickhouse的配置项users.xml,这一章介绍另一大项config.xml 从clickhouse的官网看,clickhouse的配置参数主要分了 ...

  7. python中setting.py详解

    setting.py           这个文件包含了所有有关这个Django项目的配置信息,均大写:   TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的设置是 RO ...

  8. JS代码的window.location属性详解

    如果你稍微懂一些JS代码,一般都会知道 window.location.href 这个属性.并且用该属性获取页面 URL 地址: window.location.href = window.locat ...

  9. window.Event参数详解

    window.evet 说明 event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有 ...

最新文章

  1. 白盒测试之语句分支条件覆盖
  2. 云信小课堂|聊天室内容审核很头疼?3步解决!
  3. 30秒,2种方法解决SQL Server的内存管理问题
  4. 前端—每天5道面试题(3)
  5. Nacos服务注册发现
  6. 【吐血整理】Java项目源码分享
  7. 嗖嗖移动业务大厅(源码下载+注释全 值得收藏)
  8. 获取Winform窗体或Panel下包含的所有控件、根据控件名称获取指定控件
  9. 首席新媒体运营商学院创始人黎想:给新媒体运营的7点建议
  10. ktv系统服务器,ktv服务器主机系统
  11. centos7.9使用gn+ninja编译程序
  12. TCP/IP 详解(第 2 版) 笔记 / 3 链路层 / 3.2 以太网与 IEEE 802 LAN/MAN 标准 / 3.2.2 以太网帧格式
  13. GoogleCast 简介
  14. 计算机打印途中卡住,联想打印机经典故障处理方法
  15. xarray+cfgrib读取grib文件——报错总结
  16. 实战派来了!聊聊百度智能运维的“前世今生” | 技术沙龙
  17. Windows更新策略配置
  18. WebView Cache 缓存清除
  19. 基于android蓝牙zigbee的led路灯监控系统设计,基于ZigBee的智能小区LED路灯控制系统设计...
  20. Windows优化大师

热门文章

  1. ElasticSearch 集群安装,简单使用
  2. 美丽链——看区块链如何重塑内衣业!!
  3. 底什么是伪静态?为什么要做伪静态?
  4. 后缀是dat的是什么文件 dat文件删除了能恢复吗
  5. 异常邮件: 无法连接到邮件服务器。
  6. 工业虚拟仿真软件系统解决方案
  7. 思科系统命令行输入快捷键
  8. 常微分方程数值解matlab欧拉,matlab 常微分方程数值解法 源程序代码
  9. 操作系统解决吸烟者问题
  10. 轻量级CNN模块!RepGhost:重参数化实现硬件高效的Ghost模块