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

news/2024/12/14 15:04:24/

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

相关文章

如何切换安卓手机ip?你更喜欢哪种操作

在数字化时代&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;对于网络访问和隐私保护至关重要。有时&#xff0c;可能出于个人需求或工作缘故&#xff0c;想要将自己的安卓手机IP地址更换成其他省份的&#xff0c;或者设置成静态IP等需求该如何实现呢&#xff1f;安卓手…

通信协议 http、tcp、udp

目录 1. 五层网络协议 2. http 3. tcp、udp 4. tcp 3次握手、4次挥手 5. socket 6. httpclient 遇到的问题 1. Q: 使用 EntityUtils.toString(responseEntity, "UTF-8") 中文乱码 2. Q: org.apache.http.NoHttpResponseException: 221.6.16.203:8890 failed …

深入探索数据库世界:SQLite、Redis、MySQL 与数据库设计范式

数据库 深入探索数据库世界:SQLite、Redis、MySQL 与数据库设计范式一、SQLite 数据库全方位解析(一)创建与基本操作(二)数据存储与表结构设计(三)数据操作:增删改查(四)与 C 语言联合使用(五)防止 SQL 注入二、Redis 数据库深度剖析(一)数据存储类型与独特结构(…

pstree 查看进程树 命令学习

使用Centos7.6 系统 使用yum安装 使用 yum -y install pstree 下载时会报错&#xff0c;因为 pstree 命令的包名不是这个&#xff0c;使用 yum provides pstree 可以查看pstree属于哪个包&#xff0c;然后安装它。 Loaded plugins: fastestmirror Repository epel is listed mo…

pandas:常用函数

1.groupby groupby 是 pandas 中一个非常强大的函数&#xff0c;它允许你按照某个列&#xff08;或多列&#xff09;的值对数据集进行分组&#xff0c;然后对每个组应用聚合函数。以下是 groupby 的基础介绍和用法示例。 基础介绍 groupby 函数通常用于以下情况&#xff1a;…

【[LeetCode每日一题】Leetcode 1768.交替合并字符串

Leetcode 1768.交替合并字符串 题目描述&#xff1a; 给定两个字符串 word1 和 word2&#xff0c;以交替的方式将它们合并成一个新的字符串。即&#xff0c;第一个字符来自 word1&#xff0c;第二个字符来自 word2&#xff0c;第三个字符来自 word1&#xff0c;依此类推。如果…

pdf merge

在 Ubuntu 22.04 上&#xff0c;你可以使用以下命令行工具来合并多个 PDF 文件&#xff1a; 1. pdftk pdftk 是一个强大的 PDF 工具&#xff0c;支持合并、拆分和其他操作。安装和使用方法如下&#xff1a; sudo apt install pdftk pdftk file1.pdf file2.pdf cat output me…

《负载均衡与 Tomcat:实现高可用和高性能的 Web 应用》

一、引言 在现代互联网应用中&#xff0c;高可用性和高性能是至关重要的。随着用户数量的不断增加和业务的不断扩展&#xff0c;单个服务器往往无法满足需求。负载均衡技术应运而生&#xff0c;它可以将请求分发到多个服务器上&#xff0c;从而提高系统的整体性能和可用性。Tom…