Winform(C#) 项目保存页面

news2025/2/24 2:37:31

上一张我们已经实现了TCP和串口页面的数据展示,和保存控件

我们这一章,实现如何去,控制保存。

 

一、控件展示

CheckBox   TextBox   Button   label 

Name:

checkSaveImage     checkDelete    txtSaveDays

txtSaveImagePath    btnSelectImagePath

checksaveData       

txtSaveDataPath      btnSelectDataPath

btnSave

二、根据上回创建API来实现

 private static TotalMessage instance = null;
 private TotalMessage() { }
 private static readonly object locker = new object();
 public static TotalMessage GetInstance()
 {
     if (instance == null)
     {
         lock (locker)
         {
             instance = new TotalMessage();
         }
     }
     return instance;
 }
 public string Configpath = Directory.GetCurrentDirectory() + @"\配置文件\Config.ini";

三、声明类

  #region 图片数据路径属性
  public string ImageSavePath { get; set; }
  public string DataSavePath { get; set; }
  #endregion



  #region 保存数据-图片属性
 public bool IsSaveImage { get; set; }
 public bool IsSaveData { get; set; }
 public bool IsDelete {  get; set; }
 public int SaveDay {  get; set; }
 public string PathSaveImage {  get; set; }
 public string PathSaveData {  get; set; }
 #endregion


 public void LoadConfig()
{
    ImageSavePath = IniAPI.GetPrivateProfileString("路径", "ImageSavePath", @"D:\Image", Configpath);
  DataSavePath = IniAPI.GetPrivateProfileString("路径", "DataSavePath", @"D:\Data", Configpath);
}

public void WriteValues(string Section, string key, string value)
{
    IniAPI.INIWriteValue(Configpath, Section, key, value);
}

四、窗体框架

1.在APP.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
			<section name="九点标定项目.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
		</sectionGroup>
	</configSections>
	<startup>
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
	</startup>
	<userSettings>
		<九点标定项目.Properties.Settings>
			<setting name="IsSaveImage" serializeAs="String">
				<value>True</value>
			</setting>
			<setting name="IsSaveData" serializeAs="String">
				<value>True</value>
			</setting>
			<setting name="IsDelete" serializeAs="String">
				<value>True</value>
			</setting>
			<setting name="SaveDays" serializeAs="String">
				<value>7</value>
			</setting>
			<setting name="LastDeleteData" serializeAs="String">
				<value>2023-05-11</value>
			</setting>
		</九点标定项目.Properties.Settings>
	</userSettings>
</configuration>

2. 窗体加载

 private void FormSaveDataImage_Load(object sender, EventArgs e)
 {
     checkSaveImage.Checked = message.IsSaveImage ? true : false;
     checksaveData.Checked = message.IsSaveData ? true : false;
     checkDelete.Checked = message.IsDelete ? true : false;

     txtSaveDays.Text=message.SaveDay.ToString();
     txtSaveDataPath.Text = message.PathSaveData;
     txtSaveImagePath.Text=message.PathSaveImage;
 }

3.保存数据路径

  private void btnSelectImagePath_Click(object sender, EventArgs e)
  {
      //创建一个FolderBrowserDialog对象
      FolderBrowserDialog folder=new FolderBrowserDialog();
      folder.SelectedPath = message.PathSaveImage;
      if(folder.ShowDialog() == DialogResult.OK)
      {
          txtSaveDataPath.Text=folder.SelectedPath;
          message.PathSaveImage = folder.SelectedPath;
      }
  }

4.保存图片路径

 private void btnSelectDataPath_Click(object sender, EventArgs e)
 {
     FolderBrowserDialog fold=new FolderBrowserDialog();
     fold.SelectedPath = message.PathSaveData;

     if(fold.ShowDialog() == DialogResult.OK)
     {
         txtSaveDataPath.Text=fold.SelectedPath;
         message.PathSaveData=fold.SelectedPath;
     }
 }

5.this.Controls

 TotalMessage message = TotalMessage.GetInstance();
 public FormSaveDataImage()
 {
     InitializeComponent();
     message.IsSaveData=Settings.Default.IsSaveData;
     message.IsSaveImage=Settings.Default.IsSaveImage;
     message.IsDelete=Settings.Default.IsDelete;
     message.SaveDay=Settings.Default.SaveDays;

     message.PathSaveImage=TotalMessage.GetInstance().ImageSavePath;
     message.PathSaveData=TotalMessage.GetInstance().DataSavePath;
    
 }

6.保存

 private void btnSave_Click(object sender, EventArgs e)
 {
     message.IsSaveImage=checkSaveImage.Checked;
     message.IsSaveData=checksaveData.Checked;
     message.IsDelete=checkDelete.Checked;
     message.PathSaveData=txtSaveDataPath.Text;
     message.PathSaveImage=txtSaveImagePath.Text;
     message.SaveDay=Convert.ToInt32(txtSaveDays.Text.Trim());
     TotalMessage.GetInstance().ImageSavePath=message.PathSaveImage;
     TotalMessage.GetInstance().DataSavePath=message.PathSaveData;
     Settings.Default.IsSaveData = message.IsSaveData;
     Settings.Default.IsSaveImage = message.IsSaveImage;
     Settings.Default.IsDelete = message.IsDelete;
     Settings.Default.SaveDays=message.SaveDay;

     DialogResult res=MessageBox.Show("确认保存设置","保存设置",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
     if(res == DialogResult.Yes)
     {
         Settings.Default.Save();
         message.WriteValues("路径","ImageSavePath",message.PathSaveImage);
         message.WriteValues("路径","DataSavePath",message.PathSaveData);
         MessageBox.Show("保存成功");
     }

五、ALL代码

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;
using 九点标定项目.Class;
using 九点标定项目.Properties;

namespace 九点标定项目
{
    public partial class FormSaveDataImage : Form
    {
        TotalMessage message = TotalMessage.GetInstance();
        public FormSaveDataImage()
        {
            InitializeComponent();
            message.IsSaveData=Settings.Default.IsSaveData;
            message.IsSaveImage=Settings.Default.IsSaveImage;
            message.IsDelete=Settings.Default.IsDelete;
            message.SaveDay=Settings.Default.SaveDays;

            message.PathSaveImage=TotalMessage.GetInstance().ImageSavePath;
            message.PathSaveData=TotalMessage.GetInstance().DataSavePath;
           
        }
       

        private void FormSaveDataImage_Load(object sender, EventArgs e)
        {
            checkSaveImage.Checked = message.IsSaveImage ? true : false;
            checksaveData.Checked = message.IsSaveData ? true : false;
            checkDelete.Checked = message.IsDelete ? true : false;

            txtSaveDays.Text=message.SaveDay.ToString();
            txtSaveDataPath.Text = message.PathSaveData;
            txtSaveImagePath.Text=message.PathSaveImage;
        }

        private void btnSelectImagePath_Click(object sender, EventArgs e)
        {
            //创建一个FolderBrowserDialog对象
            FolderBrowserDialog folder=new FolderBrowserDialog();
            folder.SelectedPath = message.PathSaveImage;
            if(folder.ShowDialog() == DialogResult.OK)
            {
                txtSaveDataPath.Text=folder.SelectedPath;
                message.PathSaveImage = folder.SelectedPath;
            }
        }

        private void btnSelectDataPath_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fold=new FolderBrowserDialog();
            fold.SelectedPath = message.PathSaveData;

            if(fold.ShowDialog() == DialogResult.OK)
            {
                txtSaveDataPath.Text=fold.SelectedPath;
                message.PathSaveData=fold.SelectedPath;
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            message.IsSaveImage=checkSaveImage.Checked;
            message.IsSaveData=checksaveData.Checked;
            message.IsDelete=checkDelete.Checked;
            message.PathSaveData=txtSaveDataPath.Text;
            message.PathSaveImage=txtSaveImagePath.Text;
            message.SaveDay=Convert.ToInt32(txtSaveDays.Text.Trim());
            TotalMessage.GetInstance().ImageSavePath=message.PathSaveImage;
            TotalMessage.GetInstance().DataSavePath=message.PathSaveData;
            Settings.Default.IsSaveData = message.IsSaveData;
            Settings.Default.IsSaveImage = message.IsSaveImage;
            Settings.Default.IsDelete = message.IsDelete;
            Settings.Default.SaveDays=message.SaveDay;

            DialogResult res=MessageBox.Show("确认保存设置","保存设置",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
            if(res == DialogResult.Yes)
            {
                Settings.Default.Save();
                message.WriteValues("路径","ImageSavePath",message.PathSaveImage);
                message.WriteValues("路径","DataSavePath",message.PathSaveData);
                MessageBox.Show("保存成功");
            }
        }
    }
   
}

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

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

相关文章

LangChain-基础(prompts、序列化、流式输出、自定义输出)

LangChain-基础 我们现在使用的大模型训练数据都是基于历史数据训练出来的&#xff0c;它们都无法处理一些实时性的问题或者一些在训练时为训练到的一些问题&#xff0c;解决这个问题有2种解决方案 基于现有的大模型上进行微调&#xff0c;使得它能适应这些问题&#xff08;本…

蓝思科技赋能灵伴科技:AI眼镜产能与供应链双升级

2月22日&#xff0c;蓝思科技宣布与AI交互领军企业杭州灵伴科技&#xff08;Rokid&#xff09;达成深度战略合作&#xff0c;通过整机组装与全产业链整合&#xff0c;为2025年全球AI眼镜出货量爆发式增长&#xff08;预计达400万-1200万台&#xff09;提供核心支撑。 双方合作通…

2025前端框架最新组件解析与实战技巧:Vue与React的革新之路

作者&#xff1a;飞天大河豚 引言 2025年的前端开发领域&#xff0c;Vue与React依然是开发者最青睐的框架。随着Vue 3的全面普及和React 18的持续优化&#xff0c;两大框架在组件化开发、性能优化、工程化支持等方面均有显著突破。本文将从最新组件特性、使用场景和编码技巧三…

零基础学QT、C++(六)制作桌面摄像头软件

目录 一、前言 二、Python项目包 三、C项目包 四、 项目说明 五、结语 章节汇总 一、前言 上一节&#xff0c;成功导入了OpenCV库 零基础学QT、C&#xff08;四&#xff09;QT程序打包-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞29次&#xff0c;收藏23次。QT程序打包。将项…

python-leetcode-回文链表

234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def isPalindrome(self, head: Optional[Lis…

虚拟机从零实现机器人控制

1. 系统安装 因Docker不适合需要图形界面的开发&#xff0c;因此使用虚拟机VMware方便可视化界面方式查看效果&#xff0c;相关软件可以从官网下载&#xff0c;这里有一整套免费安装文件百度网盘地址&#xff1a; 2. ROS安装 Ubuntu 22.04&#xff1a;https://docs.ros.org…

mysql之B+ 树索引 (InnoDB 存储引擎)机制

b树索引机制 B 树索引 (InnoDB 存储引擎)机制**引言&#xff1a;****1. 数据页结构与查找**2. 索引的引入**3. InnoDB 的 B 树索引****4. InnoDB B 树索引的注意事项****5. MyISAM 的索引方案 (选读&#xff0c;与 InnoDB 做对比)****6. MySQL 中创建和删除索引的语句** **B 树…

Unity 聊天气泡根据文本内容适配

第一步 拼接UI 1、对气泡图进行九宫图切割 2、设置底图pivot位置和对齐方式 pivot位置&#xff1a;&#xff08;0&#xff0c;1&#xff09; 对齐方式&#xff1a;左上对齐 3、设置文本pivot位置和对齐方式&#xff0c;并挂上布局组件 pivot设置和对齐方式和底图一样&#…

Android Studio安装配置及运行

一、下载Android Studio 官网下载&#xff1a;下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 跳转到下载界面&#xff0c;选择同意条款&#xff0c;并点击下载&#xff0c;如图&#xff1a; 二、详细安装 双击下载的文件 三、配置Android Studio …

FTP 实验(ENSP模拟器实现)

FTP 概述 FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;是一种用于在网络上进行文件传输的标准协议。它允许用户在两台计算机之间上传和下载文件。 1、FTP采用客户端-服务器模型&#xff0c;客户端通过FTP客户端软件&#xff0c;连接到FTP服务…

基于 DeepSeek + Gemeni 打造 AI+前端的多人聊天室

开源项目 botgroup.chat 介绍 AI 多人聊天室&#xff1a; 一个基于 React 和 Cloudflare Pages(免费一键部署) 的多人 AI 聊天应用&#xff0c;支持多个 AI 角色同时参与对话&#xff0c;提供类似群聊的交互体验。体验地址&#xff1a;https://botgroup.chat 开源仓库&#x…

【电机控制器】ESP32-C3语言模型——豆包

【电机控制器】ESP32-C3语言模型——豆包 文章目录 [TOC](文章目录) 前言一、简介二、代码三、实验结果四、参考资料总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 二、代码 #include <WiFi.h> #inc…

Flask实现高效日志记录模块

目录 一. 简介&#xff1a; 1. 为什么需要请求日志 二. 日志模块组成 1. 对应日志表创建&#xff08;包含日志记录的关键字段&#xff09; 2. 编写日志记录静态方法 3. 在Flask中捕获请求日志 4. 捕获异常并记录错误日志 5. 编写日志接口数据展示 6. 写入数据展…

基于python深度学习遥感影像地物分类与目标识别、分割

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

Spring有哪些缺点?

大家好&#xff0c;我是锋哥。今天分享关于【Spring有哪些缺点?】面试题。希望对大家有帮助&#xff1b; Spring有哪些缺点? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring框架是一个广泛使用的企业级Java开发框架&#xff0c;提供了丰富的功能和强大的灵…

linux学习【7】Sourc Insight 4.0设置+操作

目录 1.Source Insight是什么&#xff1f;2.需要哪些配置&#xff1f;3.怎么新建项目4.一些问题的解决1.中文乱码问题 5.常规使用1. 在工程中打开文件2. 在文件中查看函数或变量的定义3. 查找函数或变量的引用4. 快捷键 按照这个设置就可以了&#xff0c;下面的设置会标明设置理…

PHP2(WEB)

##解题思路 打开页面什么线索都没有&#xff0c;目录扫描只是扫出来一个index.php&#xff0c;而源代码没有东西&#xff0c;且/robots.txt是不允许访问的 于是一番查询后发现&#xff0c;有个index.phps的文件路径&#xff0c;里头写着一段php的逻辑&#xff0c;对url的id参数…

Halcon 3D加快表面匹配速度

文章目录 gen_box_object_model_3d 创建一个代表盒子的 3D 物体模型write_surface_model — 将表面模型写入文件read_surface_model — 将表面模型读取prepare_object_model_3d - 为某个操作准备三维对象模型select_points_object_model_3d - 对 3D 物体模型的属性应用阈值。se…

Ollama 本地GUI客户端:为DeepSeek用户量身定制的智能模型管理与交互工具

Ollama 本地GUI客户端&#xff1a;为DeepSeek用户量身定制的智能模型管理与交互工具 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xf…

基于SSM的《计算机网络》题库管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘 要 《计算机网络》题库管理系统是一种新颖的考试管理模式&#xff0c;因为系统是用Java技术进行开发。系统分为三个用户进行登录并操作&#xff0c;分别是管理员、教师和学生。教师在系统后台新增试题和试卷&#xff0c;学生进行在线考试&#xff0c;还能对考生记录、错题…