当前位置: 首页 > news >正文

详讲C#中如何存储当前项目的设置-超级简单省事

我们在编写软件的时候总有一些配置数据需要保存,比如用户选择的偏好设置,又如软件所用到的数据库文件等。我们有很多中方式都可以保存,比如直接保存在某个文本文件,或者ini文件中,其实最简单的办法是保存在项目的资源文件中。

文章目录

  • 一、设置文件
    • 1、找到并建立设置文件
    • 2、App.config文件
    • 3、setting.designer.cs
  • 二、在主程序中调用
    • 1、读取
    • 2、写入
    • 3、写入数据不能保存的问题

文章原出处: https://blog.csdn.net/haigear/article/details/141424438

一、设置文件

1、找到并建立设置文件

设置文件,我们可以在项目属性中找到它,注意,不是上面的资源文件。如果你选择了资源文件,那就需要操作资源文件中的键值对了,方法其实查不到,但我们这里是专门来讲软件的设置,所哟我们还是建议大家选择设置文件。

在这里插入图片描述

打开后我们就可以创建一些我们需要保存的键值对,当然,你可以只创建名称
在这里插入图片描述
文章原出处: https://blog.csdn.net/haigear/article/details/141424438

2、App.config文件

完上述上述步骤后,我们会发现项目文件中都了一个app.config,内容可以和上面表格对应
在这里插入图片描述
注意:
这个文件其实不是真正用来我们存储我们的设置数据的文件,而只是为我们提供了一个模板文件,在运行程序的时候,如果需要存储配置数据了,系统会自动拷贝一个app.config文件放在windows的用户数据中,一般都放在appdata中了,大家感兴趣的可以去找找。
文章原出处: https://blog.csdn.net/haigear/article/details/141424438

3、setting.designer.cs

这是系统专门为我们的项目生成的一个封装了上述表格中建立的键值操作的类。值得大家注意的是,如果你只是用到读取上述表格中的键值,那么无所谓了,就不用修改了。
通过在这里添加的存储名称,系统会自动帮我们在建立一个属性:

     public string saveFoldPath {get {return ((string)(this["saveFoldPath"]));}}

但我们使用的时候,如果要存储,上面的类是不满足要求的,因为很显然,上面的saveFoldPath是只读的,如果我们要让它具备写的特性,那么就必须手动增加set代码,如下:

     public string saveFoldPath {get {return ((string)(this["saveFoldPath"]));}set {this["saveFoldPath"] = value;}}

文章原出处: https://blog.csdn.net/haigear/article/details/141424438

二、在主程序中调用

1、读取

如果你仅仅是想读取刚刚表格中的内容,超级简单(以前老版本的VS可能比较复杂一些,需要建立一个配置管理对象,而VS2022版就人性化了,不需要建立一个配置管理对象实例了)

string fpath=Properties.Settings.Default.saveFoldPath;

是不是简单到出奇!!

2、写入

假定我们是要获取选择的文件夹的路径,那么代码如下:

 FolderBrowserDialog folderBrowserDialog= new FolderBrowserDialog();if(DialogResult.OK== folderBrowserDialog.ShowDialog()){Properties.Settings.Default.saveFoldPath = folderBrowserDialog.SelectedPath;Properties.Settings.Default.Save();MessageBox.Show(Properties.Settings.Default.saveFoldPath);}

其实真正写入的动作就两句:

Properties.Settings.Default.saveFoldPath = @"c:\ddd";
Properties.Settings.Default.Save();

还是一句话,超级简单!!
文章原出处: https://blog.csdn.net/haigear/article/details/141424438

3、写入数据不能保存的问题

你可能会遇到写入的数据不能存储的问题,那么一定是你把这里的设置给改成了“应用程序”了,必须改回“用户”!
在这里插入图片描述

好了,超级简单的事情,那就这简单的说完了。本文所描述的代码都是建立在VS2022的IDE中的,希望大家注意,不保证在其他版本中能够正确实现。
文章可能随时更新,请大家关注文章原出处: https://blog.csdn.net/haigear/article/details/141424438

http://www.lryc.cn/news/430023.html

相关文章:

  • 【QT文件操作】---xml文件读取
  • 科研软件 | Diamond 4.6 安装教程
  • 利用keepalived达成服务高可用
  • Dumpy:一款针对LSASS数据的动态内存取证工具
  • TinyEngine是什么?
  • FPGA跨时钟域处理
  • 【Docker深入浅出】Docker镜像
  • “LOCAL_LISTENER”参数导致业务无法连接数据库,文末附Oracle连接故障检查监听的排查流程
  • Vmware虚拟机接入物理机路由器网络
  • yolov8旋转框+关键点检测
  • Qt-QWidget的windowTitle属性(13)
  • RCE编码绕过--php://filter妙用
  • FactoryBean 与 BeanFactory
  • 【迅为RK3568开发板】OpenHarmony学习开发系列教程(第2期 南向基础篇一)
  • 编程修炼之Hibernate--- springboot启动初始化ddl过程与如何自定义修改 table 字段长度
  • TOMCAT入门到精通
  • Android笔试面试题AI答之Kotlin(18)
  • Linux基础知识学习(五)
  • 股票买卖的思路与代码
  • Eureka Server与Eureka Client详解:服务注册与发现的交互机制
  • php-fpm 如何查看哪个正在执行死循环 并终止
  • 电脑硬盘坏了怎么恢复数据?
  • cdga|某大型企业数据治理的成功转型:构建数据驱动的竞争力新引擎
  • C#使用 ModeBusTCP读取汇川Easy521PLC
  • PostgreSQL的postgres主进程
  • Java实现K个排序链表的高效合并:逐一合并、分治法与优先队列详解
  • Xinstall揭秘:高效App推广背后的黑科技
  • 星巴克VS瑞幸,新王、旧王之争给新CEO带来哪些启示
  • C语言 | Leetcode C语言题解之第354题俄罗斯套娃信封问题
  • 大型俄罗斯国际展览会介绍