• .NET(C#) 如何配置用户首选项及保存用户设置


    最近开发软件,需要将用户设置保存下来以便下次打开后再用,看了半天原来.NET框架自带setting功能。记录如下:

    一,“设置” 页面

      使用项目设计器的“设置”页指定项目的应用程序设置。 通过应用程序设置,能够为应用程序动态存储和检索属性设置及其他信息。 这些设置还能让你维护客户端计算机上的自定义应用程序和用户首选项。

      若要访问“设置”页,请在解决方案资源管理器中选择项目节点,然后使用右键单击上下文菜单选择“属性”。 项目设计器出现时,选择“设置”选项卡。

      点击“设置”选项卡,在项目设计器中打开“设置”页:

    1.1 标题栏

      “设置”页顶部的标题栏包含多个控件:

      • 同步:“同步”可将应用程序运行时或调试期间使用的用户范围的设置还原为在设计时定义的默认值。 要还原数据,请从磁盘中而不是项目数据中删除运行时生成的应用程序特定文件。
      • 加载Web设置:“加载 Web 设置”将显示“登录”对话框,让你能够加载经身份验证的用户或匿名用户的设置。 只有在已启用“服务”页上的客户端应用程序服务并指定“Web 设置服务位置”时,才启用此按钮。
      • 查看代码:对于 C# 项目,可使用“查看代码”按钮查看 Settings.cs 文件中的代码。 此文件定义 Settings 类,可用于处理 Settings 对象上的特定事件。 在非 Visual Basic 语言中,必须显式调用此包装类的 Save 方法,才能持久保存用户设置。 此操作通常在主窗体的 Closing 事件处理程序中完成。 Save 方法调用示例如下所示: Properties.Settings.Default.Save();
      • 访问修饰符:“访问修饰符”按钮指定 Properties.Settings(对于 C#)或 My.Settings(对于 Visual Basic)帮助程序类的访问级别,这些类分是 Visual Studio 在 Settings.Designer.cs 或 Settings.Designer.vb 中生成的。

        对于 Visual C# 项目,访问修饰符可为“内部”或“公共”。

        对于 Visual Basic 项目,访问修饰符可为“友元”或“公共”。

        默认情况下,设置在 C# 中为“内部”,在 Visual Basic 中为“友元”。 如果 Visual Basic 以“内部”或“友元”形式生成帮助程序类,则可执行文件 (.exe) 应用程序无法访问已添加到类库(.dll 文件)中的资源和设置。 如果需要共享类库中的资源和设置,请将访问修饰符设置为“公共”。

    1.2 设置网络

      “设置网格”用于配置应用程序设置。 此网格包括以下列:

      • 名称:在此字段中输入应用程序设置的名称
      • 类型:使用下拉列表选择设置类型。 使用频率最高的类型将显示在下拉列表中,例如 String、(Connection string) 和 System.Drawing.Font。 可选择列表末尾的“浏览”,然后在“选择类型”对话框中选择一种类型,进而改选其他类型。 选择一种类型后,它会添加到下拉列表中的常用类型(仅限当前解决方案)。
      • 范围:选择“应用程序”或“用户”。应用程序范围的设置(例如系统字体)旨在用于用户首选项。用户可在运行时更改这些设置。
      • 值:与应用程序设置关联的数据或值。例如,如果设置为字体,则它的值可以是“Verdana,9.75pt,样式=粗体”。

     二,在运行时读取设置(C#)

      可以通过“属性”对象在运行时读取应用程序范围和用户范围的设置。 “属性”对象通过 Properties.Settings.Default 成员在定义它们的项目的默认命名空间中公开项目的所有默认设置。

      请通过 Properties.Settings.Default 成员访问相应的设置。 下面的示例演示如何将名为 myColor 的设置分配给 BackColor 属性。 这要求你在之前已创建包含名为 myColor 的设置(其类型为 System.Drawing.Color)的设置文件。

      this.BackColor = Properties.Settings.Default.myColor;

    三,在运行时编写用户设置(C#)

      应用程序范围的设置是只读的,只能在设计时更改,或通过在应用程序会话之间更改 .config 文件进行更改。 但用户范围的设置可以在运行时写入,就像更改任何属性值一样。 新值在应用程序会话的持续时间内始终存在。 可以通过调用 Save 方法在应用程序会话之间保留对设置的更改。

      1,访问设置并向其分配新值,如本示例中所示:Properties.Settings.Default.myColor = Color.AliceBlue;

      2,如果想要到在应用程序会话之间保留对设置的更改,请调用 Save 方法,如本示例中所示:Properties.Settings.Default.Save();

    四,实例

    4.1 创建简单的窗体

    4.2 创建用户设置

     4.3 代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace ComPort
    {
        public partial class Form4 : Form
        {
            public Form4()
            {
                InitializeComponent();
            }
    
            private void Form4_Load(object sender, EventArgs e)
            {
                this.tb_color.Text = Properties.Settings.Default.color;
                this.tb_value.Text = Properties.Settings.Default.value;
                this.tb_name.Text = Properties.Settings.Default.name;
                this.nud.Value = Properties.Settings.Default.nud;
                this.tb_time.Text = Properties.Settings.Default.time;
            }
         
         // 控制第一列textbox的按钮 private void OK_Click(object sender, EventArgs e) { Properties.Settings.Default.color = this.tb_color.Text; Properties.Settings.Default.value = this.tb_value.Text; Properties.Settings.Default.name = this.tb_name.Text; Properties.Settings.Default.nud = (int) this.nud.Value; Properties.Settings.Default.Save(); }
         // 控制第二列textbox的按钮 private void btn_ok_Click(object sender, EventArgs e) { Properties.Settings.Default.time = this.tb_time.Text; Properties.Settings.Default.Save(); } } }

    4.4 运行  

       修改后关闭再重启,系统已经记录上次的配置值了。

      但是,你在项目的app.config里是看不到修改值的,这里记录的就是创建时的默认值。那存在哪里了呢?我的是存在

        C:\Users\(用户名称)\AppData\Local\ComPort(项目名称)\ComPort.exe_Url_0zqu45wzw0sz20n5no0wbxd0nqhner5q\1.0.0.0\user.config  

      完美~

       

      

  • 相关阅读:
    python之scrapy篇(三)
    python之scrapy篇(二)
    python之scrapy篇(一)
    matlib调用python时转py格式为matlib格式
    ubuntu18.40 rtx2080ti安装显卡驱动/cuda/cudnn/tensorflow-gpu
    pytorch导入错误so: undefined symbol: _Z11libshm_initPKc
    yolo_v3训练自己的模型(人脸及deep-sort)(或自己数据集)
    python-图像处理(映射变换)
    python编译pyc工程--导包问题解决
    python(leetcode)-14最长公共前缀
  • 原文地址:https://www.cnblogs.com/boligongzhu/p/16413489.html
Copyright © 2020-2023  润新知