关于C#winform端Settings.settings的见解_winform settings-CSDN博客

来源: 关于C#winform端Settings.settings的见解_winform settings-CSDN博客

1.说明
由于最近工作比较忙很长时间没有写文章了,最近在项目中使用Settings.settings时遇见了一些问题,故作记录,希望各位大神指点。
2.Settings.settings说明
Settings.settings结构如上图,在Settings.settings中添加节点时Settings.Designer.cs自动生成该节点的属性,App.config自动生成节点信息。
3.使用方式介绍
private void button1_Click(object sender, EventArgs e)
{
    RefreshLabel();
}
private void RefreshLabel()
{
    label1.Text = “UserSave:” + Settings.Default.UserSave;
    label2.Text = “User:” + Settings.Default.User;
    label3.Text = “Application:” + Settings.Default.Application;
    Settings.Default.UserSave = “2”;
    Settings.Default.User = “2”;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    Settings.Default.Save();
}
4.属性介绍
名称:自定义节点名称,使用 Settings.Default.名称 获取或修改该节点的值
类型:设置节点的类型,获取或修改该节点的值必须使用相同的数据类型;
范围:包含用户和应用程序(后续单独说明);
值:可设置初始值;
5.属性-范围
范围包含了用户和应用程序
(1)用户节点
1.允许修改节点值;
2.修改节点的值仅在程序本次运行时生效,下次运行需要使用程序的默认值则不能调用
Settings.Default.Save();
3.修改节点的值需要在程序下次运行使用必须调用
Settings.Default.Save();
Settings.Default.Save(); 介绍
1.如果节点设置为用户,并且调用了Save()方法,会在C:\Users\Administrator\AppData\Local\项目名称\对应版本\1.0.0.0\user.config的文件中存储修改后的节点的值;
项目名称:当前运行的项目的名称
对应版本:共四种,包含:开发环境中启动的Debug、Release以及在Debug或Release中直接执行程序的.exe(可执行文件);
2.若未调用Save()方法,user.config不会生成或修改;
3.调用Save()方法时,仅保存调用前修改过所有节点的值,调用后修改的值不会改变,修改后节点在exe.config、vshost.exe.config不会显示修改后的值
4.建议在程序退出时,调用Save()方法;若仅需要节点在本次调用修改有效,则不能调用Save(),防止程序出现不可估计的错误;
5.若不仅包含了启动本次修改有效节点,还包含了修改后下次启动仍有效节点,建议在Settings.settings中添加用户节点,但是不能在程序调用Save方法,再配合使用Configuration使用。
(2)应用程序节点
1.节点的值不允许在程序中修改;
2.不会在C:\Users\Administrator\AppData\Local\项目名称\对应版本\1.0.0.0\user.config生成节点;
3.在app.config、exe.config、vshost.exe.config中生成节点
6.Configuration说明
在app.config添加节点,会在exe.config、vshost.exe.config中生成节点;
#region ConfigurationManager使用说明
// 想调用ConfigurationManager必须要先在工程里添加system.configuration程序集的引用
// 在引用点击右键选择添加引用,搜索Config就会找到
#endregion
using System;
using System.Configuration;
using System.Xml;
/******************************************************
* 模块作者: zheng
* 创建时间: 2021/6/27 20:18:15
* 功能描述: 1.用于对Winform端对EXE.config或操作vshost.exe.config文件的读写;
*           2.修改构造函数中初始化对象改变操作对象。
* 使用说明: 1.右击引用,添加System.Configuration;
*           2.使用该类时需要修改命名空间;
*           3.使用前建议向app.config添加节点,节点示例:
*           <appSettings file=””>
*             <add key=”光源连接端口” value=”com1″ />
*             <add key=”COM1″ value=”COM1,9600,8,None,1,已启用” />
*           </appSettings>
*******************************************************/
namespace MicroscaleMeasure.Utils
{
    class AppConfigUtil
    {
        /// <summary>
        /// 管理配置文件对象
        /// </summary>
        private static readonly Configuration MConfig;
        static AppConfigUtil()
        {
            //1.操作vshost.exe.config
            //MConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            //2.操作exe.config
            var file = System.Windows.Forms.Application.ExecutablePath;
            MConfig = ConfigurationManager.OpenExeConfiguration(file);
        }
        /// <summary>
        /// 获取AppSettings中某一节点值
        /// </summary>
        /// <param name=”key”>节点名称</param>
        public static string GetConfigValue(string key)
        {
            if (MConfig.AppSettings.Settings[key] != null)
                return MConfig.AppSettings.Settings[key].Value;
            else
                return string.Empty;
        }
        /// <summary>
        /// 修改配置文件,若节点不存在则添加节点
        /// </summary>
        /// <param name=”aKey”>需要修改的节点名称</param>
        /// <param name=”aValue”>需要修改的节点的值</param>
        public static void UpdateAppSettings(string aKey, string aValue)
        {
            if (MConfig.AppSettings.Settings[aKey] != null)
                MConfig.AppSettings.Settings[aKey].Value = aValue;// 修改
            else
            {
                var ass = (AppSettingsSection)MConfig.GetSection(“appSettings”);
                ass.Settings.Add(aKey, aValue);// 添加
            }
            MConfig.Save(ConfigurationSaveMode.Modified);// 保存修改
            ConfigurationManager.RefreshSection(“appSettings”);// 强制重新载入配置文件的连接配置
        }
    }
}
————————————————
                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_47492910/article/details/121810100
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏