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

ops/2024/12/15 14:06:40/

最近开发软件,需要将用户设置保存下来以便下次打开后再用,看了半天原来.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 代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

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;

        }

     <br>     // 控制第一列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 = (intthis.nud.Value;

            Properties.Settings.Default.Save();

        }

<br>     // 控制第二列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  

  完美~


http://www.ppmy.cn/ops/142124.html

相关文章

初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容

uniapp微信小程序页面结构 首页页面代码 微信小程序模拟器 模拟器页面为空白时查了下&#xff0c;有几个说是“Hbuilder编译的时候应该编译出来一个app.js文件 但是却编译出了App.js”&#xff0c;但是我的小程序结构没问题&#xff0c;并且真机预览没有问题 真机调试 根据defi…

axios请求拦截器和响应拦截器,封装naive-ui的 Loading Bar加载条和useMessage消息提示

接之前的博客设计从0开始边做边学&#xff0c;用vue和python做一个博客&#xff0c;非规范化项目&#xff0c;怎么简单怎么弄&#xff0c;跑的起来有啥毛病解决啥毛病&#xff08;三&#xff09;&#xff0c;目前已经完成了基本的功能demo&#xff0c;但是请求接口不可能每个页…

微服务-01

1.认识微服务 1.1 单体架构 单体架构&#xff08;monolithic structure&#xff09;&#xff1a;顾名思义&#xff0c;整个项目中所有功能模块都在一个工程中开发&#xff1b;项目部署时需要对所有模块一起编译、打包&#xff1b;项目的架构设计、开发模式都非常简单。 当项目…

skywalking实现链路追踪-笔记

本文属于b站图灵课堂springcloud笔记系列。讲的好还不要钱&#xff0c;值得推荐。 为什么采用链路追踪&#xff1f; 为了排查问题&#xff0c;从请求源头到底层服务的全链路环节进行追踪。 skywalking 是什么&#xff1f; 分布式系统的应用程序性能监视工具&#xff0c;专为…

金融机构远程办公面临的安全挑战

当前&#xff0c;金融机构的业务模式、IT架构都发生了深刻变化。在建设远程办公系统时&#xff0c;金融机构需要面对以下几个方面的挑战&#xff1a; 如何实现“边界模糊化”网络环境下的安全接入&#xff1f; 随着金融机构基础设施云化、业务互联网化和办公移动化&#xff0…

上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数 一、获取音视频文件时长二、计算文本文件字数 最近有个需求&#xff0c;要求上传文件时获取音视频文件时长和文本文件字数&#x1f436;。 发现这样的冷门资料不多&#xff0c;特做个记录。本文忽略文件上传功能&#xff0c;只封装核心的工具…

3D 生成重建036-HyperDiffusion直接生成nerf几何

3D 生成重建036-HyperDiffusion直接生成nerf几何 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 作者提出了一种名为HyperDiffusion的新型方法&#xff0c;用于直接生成隐式神经辐射场&#xff0c;方法是预测其权重空间中的参数。与以往需要对神经网络的单个实例进行优…

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录 一、正则表达式 &#xff08;1&#xff09;什么是正则表达式 &#xff08;2&#xff09;它的结构及使用 示例&#xff1a; 1.字符 . &#xff08;←这里有个小点哦&#xff09; 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d &#xff08;3&#xff09;补充&#xff…