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

C# 鼠标点击ToolStripStatuslabel 在线修改Text属性并存储加载显示Text属性

在实际项目中为方便了解视觉软件的使用性,可能需要添加一些小而稍微实用的功能:一个StipStatus控件上的Label按钮属性Text需要修改并保存,软件重启后能够自动加载修改后的属性名。

定义变量

public static string controlsText = System.Windows.Forms.Application.StartupPath + "\\相关属性\\";
//子窗体窗口属性名修改private string FilePathText = VProClass.controlsText + "窗口属性名.txt";

主窗体中的代码

 #region 修改子窗体窗口属性 名private void SaveStatusLabelsText(string text, int toolRow){// 读取文件的所有行string[] rowLines = System.IO.File.ReadAllLines(FilePathText);// 创建一个新的字符串列表,用于存储更新后的内容List<string> newLines = new List<string>();try{// 插入内容到指定位置 if (rowLines.Length >= 0)//需要考虑文本为空的情况{using (StreamWriter writer = System.IO.File.AppendText(FilePathText)){if (toollabelTag == 1)writer.WriteLine(text);if (toollabelTag == 2)writer.WriteLine(text);if (toollabelTag == 3)writer.WriteLine(text);if (toollabelTag == 4)writer.WriteLine(text);if (toollabelTag == 5)writer.WriteLine(text);if (toollabelTag == 6)writer.WriteLine(text);}}// 插入内容到指定位置 if (rowLines.Length == Convert.ToInt32(ValuePropagation.count)){for (int g = 0; g < rowLines.Length; g++){if (g == toolRow - 1){rowLines[g] = text;}//newLines.Add(rowLines[g]);}// 将更新后的内容写回到文件中System.IO.File.WriteAllLines(FilePathText, rowLines);}}catch (Exception ex){MessageBox.Show($"保存文本时出错:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}}private void LoadStatusLabelsText(){if (System.IO.File.Exists(FilePathText)){try{using (StreamReader reader = new StreamReader(FilePathText)){// 读取文件的所有行到一个字符串数组中string[] lines = System.IO.File.ReadAllLines(FilePathText);for (int k = 0; k < lines.Length; k++){if (k == 0)displayControls[0].相机编号1.Text = reader.ReadLine();if (k == 1)displayControls[1].相机编号2.Text = reader.ReadLine();if (k == 2)displayControls[2].相机编号3.Text = reader.ReadLine();if (k == 3)displayControls[3].相机编号4.Text = reader.ReadLine();if (k == 4)displayControls[4].相机编号5.Text = reader.ReadLine();if (k == 5)displayControls[5].相机编号6.Text = reader.ReadLine();}}}catch (Exception ex){MessageBox.Show($"加载文本时出错:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}}}public void clearLabelText(int toolTag){if (System.IO.File.Exists(FilePathText)){try{using (StreamReader reader = new StreamReader(FilePathText)){// 读取文件的所有行到一个字符串数组中List<string> linesRow = new List<string>(System.IO.File.ReadAllLines(FilePathText));if (toolTag == 1 && toolTag < linesRow.Count){string specifiedLineRow = linesRow[toolTag - 1];if (specifiedLineRow != null){linesRow.RemoveAt(toolTag - 1);//删除指定行}}if (toolTag == 2 && toolTag < linesRow.Count){string specifiedLineRow = linesRow[toolTag - 1];if (specifiedLineRow != null){linesRow.RemoveAt(toolTag - 1);//删除指定行}}if (toolTag == 3 && toolTag < linesRow.Count){string specifiedLineRow = linesRow[toolTag - 1];if (specifiedLineRow != null){linesRow.RemoveAt(toolTag - 1);//删除指定行}}if (toolTag == 4 && toolTag < linesRow.Count){string specifiedLineRow = linesRow[toolTag - 1];if (specifiedLineRow != null){linesRow.RemoveAt(toolTag - 1);//删除指定行}}if (toolTag == 5 && toolTag < linesRow.Count){string specifiedLineRow = linesRow[toolTag - 1];if (specifiedLineRow != null){linesRow.RemoveAt(toolTag - 1);//删除指定行}}if (toolTag == 6 && toolTag < linesRow.Count){string specifiedLineRow = linesRow[toolTag - 1];if (specifiedLineRow != null){linesRow.RemoveAt(toolTag - 1);//删除指定行}}}}catch (Exception ex){MessageBox.Show($"加载文本时出错:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}}}private void 相机编号1_Click(object sender, EventArgs e){//输入Text属性名var label = sender as ToolStripStatusLabel;toollabelTag = 1;if (label != null){// 弹出输入框让用户输入新的文本 input = Microsoft.VisualBasic.Interaction.InputBox("请输入新的文本:", "修改子窗体名", label.Text);if (!string.IsNullOrEmpty(input)){label.Text = input;clearLabelText(toollabelTag);// 保存修改后的文本 SaveStatusLabelsText(label.Text, toollabelTag);}}}
#endregion

主窗体Load事件中添加

//修改子窗体名displayControls[0].相机编号1.Click += 相机编号1_Click;// 加载保存的文本 LoadStatusLabelsText();

相关文章:

C# 鼠标点击ToolStripStatuslabel 在线修改Text属性并存储加载显示Text属性

在实际项目中为方便了解视觉软件的使用性&#xff0c;可能需要添加一些小而稍微实用的功能:一个StipStatus控件上的Label按钮属性Text需要修改并保存&#xff0c;软件重启后能够自动加载修改后的属性名。 定义变量 public static string controlsText System.Windows.Forms.A…...

下载安装运行测试开源vision-language-action(VLA)模型OpenVLA

1. 安装 项目官网OpenVLA 首先按照官网提示的以下代码&#xff0c;执行创建环境->安装最小依赖->git克隆项目等 # Create and activate conda environment conda create -n openvla python3.10 -y conda activate openvla# Install PyTorch. Below is a sample comma…...

PyQt6/PySide6 的 SQL 数据库操作(QtSql)

一、核心组件架构 1.1 QtSql模块构成 QSqlDatabase&#xff1a;数据库连接管理&#xff08;支持连接池&#xff09;QSqlQuery&#xff1a;SQL语句执行与结果遍历QSqlTableModel&#xff1a;可编辑的表格数据模型QSqlQueryModel&#xff1a;只读查询结果模型QSqlRelationalTab…...

【Zookeeper如何实现分布式锁?】

Zookeeper如何实现分布式锁? 一、ZooKeeper分布式锁的实现原理二、ZooKeeper分布式锁的实现流程三、示例代码四、总结一、ZooKeeper分布式锁的实现原理 ZooKeeper是一个开源的分布式协调服务,它提供了一个分布式文件系统的接口,可以用来存储和管理分布式系统的配置信息。 …...

【MySQL】环境变量配置

环境变量英文名SystemRoot&#xff0c;直译为“系统总&#xff08;根&#xff09;目录"&#xff0c;主要指明操作系统的重要目录在哪里。那么配置MySQL的环境变量&#xff0c;就是在程序运行时&#xff0c;告诉操作系统你的MySQL目录位置。 复制MySQL安装目录&#xff1a;…...

为AI聊天工具添加一个知识系统 之103 详细设计之44 自性三藏 之4 祖传代码 之2

本文要点 要点 前面的所有讨论都是为了给出我的设计项目&#xff08;为使用AI聊天工具的聊天者 开挂一个知识系统&#xff09; 的祖传代码 的完整设计&#xff0c;其中 的“槽”&#xff08;占位符变量&#xff09;的 库元&#xff08;宝性和自性creator -本俱 替换内容标准模…...

什么是 近端策略优化算法PPO

什么是 近端策略优化算法PPO 近端策略优化算法(Proximal Policy Optimization,PPO)是OpenAI公司于2017年开发的一系列无模型强化学习算法,用于优化策略网络以最大化累计奖励。以下是具体介绍及示例: 算法原理 策略梯度:PPO基于策略梯度算法,通过估计策略网络的梯度来更…...

【Java】实现后端请求接口

【Java】实现后端请求接口 【一】使用 HttpURLConnection 实现四种请求方式的示例【1】Get请求【2】POST请求【3】PUT请求【4】DELETE 请求【5】汇总工具类&#xff0c;通过传参实现4种请求 【二】HttpClient 实现四种请求方式的示例【1】GET请求【2】POST 请求【3】PUT 请求【…...

假面与演员:到底是接口在使用类,还是类在使用接口?编程接口与物理接口的区别又是什么?

前言&#xff1a;本篇文章解释了接口学习过程中的2个常见问题&#xff0c;一个是“为什么是类在使用接口”&#xff0c;另一个一个是“编程接口与物理接口的差异源于所处的抽象层次和交互模式的不同”&#xff0c;旨在揭示编程接口的本质。 Part1.是类在使用接口 当学习接口时…...

Node.js 中的 Event 模块详解

Node.js 中的 Event 模块是实现事件驱动编程的核心模块。它基于观察者模式&#xff0c;允许对象&#xff08;称为“事件发射器”&#xff09;发布事件&#xff0c;而其他对象&#xff08;称为“事件监听器”&#xff09;可以订阅并响应这些事件。这种模式非常适合处理异步操作和…...

C# 添加图标

一、前言 为应用程序添加图标是优化用户界面、提升应用辨识度的重要操作。合适的图标能帮助用户快速识别和区分不同应用&#xff0c;增强应用的易用性和专业性。 本指南旨在为你提供详细、易懂的步骤&#xff0c;教你如何为应用程序的窗体添加图标。从图标素材的获取到具体的…...

Docker 入门与实战:从安装到容器管理的完整指南

&#x1f680; Docker 入门与实战&#xff1a;从安装到容器管理的完整指南 &#x1f31f; &#x1f4d6; 简介 在现代软件开发中&#xff0c;容器化技术已经成为不可或缺的一部分。而 Docker 作为容器化领域的领头羊&#xff0c;以其轻量级、高效和跨平台的特性&#xff0c;深…...

4.【线性代数】——矩阵的LU分解

四 矩阵的LU分解 1. AB的逆矩阵2. 转置矩阵3. ALU3.1 2x2矩阵3.2 3x3矩阵3.3 nxn的矩阵分解的次数&#xff1f; 1. AB的逆矩阵 { ( A B ) ( B − 1 A − 1 ) I ( B − 1 A − 1 ) ( A B ) I ⇒ ( A B ) − 1 B − 1 A − 1 \begin{cases} (AB)(B^{-1}A^{-1}) I\\ (B^{-1}A^…...

ELK8.17部署(Ubantu24x64)

检查java环境 ELK8.x不支持java8 若无环境可执行 sudo apt install openjdk-17-jre-headless 准备安装包 官网下载地址: ELK products 搜Elasticsearch、Kibana、Logstash、Filebeat versions需一致&#xff0c;这里使用8.17.0 Elasticsearch Kibana Logstash Filebeat e…...

什么是算法的空间复杂度和时间复杂度,分别怎么衡量。

1. 时间复杂度 时间复杂度衡量的是算法运行时间与输入规模之间的关系。它通常用大O记号&#xff08;Big O Notation&#xff09;表示&#xff0c;例如 O(1)、O(n)、O(n2) 等。 衡量方法&#xff1a; 常数时间复杂度 O(1)&#xff1a;无论输入规模如何&#xff0c;算法的执行时…...

HCIA项目实践---ACL访问控制列表相关知识和配置过程

十 ACL访问控制列表 1 策略的概念 在网络连通之后&#xff0c; 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上&#xff0c;匹配流量&#xff0c;执行相应的动作。&#xff08;流量流入或者流出的接口并不是一个固定的概念而是一个相对的…...

细说STM32F407单片机RTC入侵检测和时间戳的原理及使用方法

目录 一、入侵检测的功能 二、示例功能 三、项目设置 1、晶振、DEBUG、CodeGenerator、USART6、KEYLED 2、RTC &#xff08;1&#xff09;设置RTC的模式。 &#xff08;2&#xff09;General、Time、Date\Wake Up分组 &#xff08;3&#xff09;Tamper分组 1&#xff…...

STM32 CAN过滤器配置和应用方法介绍

目录 概述 一、CAN过滤器核心概念 二、过滤器配置步骤&#xff08;以标准ID为例&#xff09; 三、不同模式的配置示例 四、高级配置技巧 五、调试与问题排查 六、关键计算公式 总结 概述 在STM32微控制器中&#xff0c;CAN过滤器可以配置为标识符屏蔽模式和标识符列表模…...

搜狗浏览器卸载教程

需求背景 今天发现geek居然无法卸载搜狗浏览器&#xff0c;作为一个老司机&#xff0c;这是不允许的。如果你使用geek或者windows的卸载&#xff0c;或者直接在它的安装包的Uninstall.exe中卸载&#xff0c;他走到100%就一直不动了。那玩意是假的。 卸载教程 结束 -----华丽的…...

Go 模块管理工具 `go mod tidy` 和 `go.sum` 文件详解

Go 模块管理工具 go mod tidy 和 go.sum 文件详解 引言 Go 语言自引入模块&#xff08;module&#xff09;系统以来&#xff0c;极大地简化了依赖管理和版本控制。go mod tidy 和 go.sum 文件是 Go 模块系统中的两个重要组成部分&#xff0c;它们共同确保项目的依赖项是最新的…...

音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;2&#xff09;——使用FFmpeg命令生成RTP流》可以知道&#xff0c;推流端通过下面FFmpeg命令可以将一个媒体文件转推RTP&#xff0c;生成RTP流&#xff1a; ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec cop…...

STM32 串口转 虚拟串口---实现USB转串口功能

一&#xff0c;USART与UART 区别 USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;通用同步/异步串行接收/发送器 相较于UART&#xff1a;通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;多了…...

【进程与线程】Linux 线程、同步以及互斥

每个用户进程有自己的地址空间。 线程是操作系统与多线程编程的基础知识。 系统为每个用户进程创建一个 task_struct 来描述该进程&#xff1a;该结构体中包含了一个指针指向该进程的虚拟地址空间映射表&#xff1a; 实际上 task_struct 和地址空间映射表一起用来表示一个进程…...

胶囊网络动态路由算法:突破CNN空间局限性的数学原理与工程实践

一、CNN的空间局限性痛点解析 传统CNN的瓶颈&#xff1a; 池化操作导致空间信息丢失&#xff08;最大池化丢弃85%激活值&#xff09;无法建模层次空间关系&#xff08;旋转/平移等变换不敏感&#xff09;局部感受野限制全局特征整合 示例对比&#xff1a; # CNN最大池化示例…...

当pcie设备变化时centos是否会修改网络设备的名称(AI回答)

当pcie设备变化时centos是否会修改网络设备的名称 在CentOS&#xff08;以及其他基于Linux的操作系统&#xff09;中&#xff0c;网络接口的命名通常遵循特定的规则&#xff0c;尤其是在使用PCIe设备&#xff08;如网络适配器&#xff09;时。网络接口的命名通常基于设备的物理…...

【人工智能】释放数据潜能:使用Featuretools进行自动化特征工程

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 特征工程是机器学习流程中至关重要的一步,它直接影响模型的性能。然而,手动特征工程既耗时又需要领域专业知识。Featuretools是一个强大的…...

docker批量pull/save/load/tag/push镜像shell脚本

目录 注意&#xff1a; 脚本内容 执行效果 注意&#xff1a; 以下脚本为shell脚本通过docker/nerdctl进行镜像独立打包镜像的相关操作脚本内仓库信息和镜像存取路径需自行更改需自行创建images.txt并填写值&#xff0c;并且与脚本位于同级目录下 [rootmaster01 sulibao]# l…...

对正则表达式说不!!!

可能大家都会和我一样&#xff0c;时常会遇到正则表达式&#xff0c;有时候会忘记某些字符而苦恼。今天就帮助大家克服它&#xff0c;虽然不多&#xff0c;但我认为掌握这些足够了&#xff0c;万变不离其宗&#xff0c;以不变应万变。 一、正则表达式内容分类 1. 字符类 [abc…...

Redis日志分析

主从同步尝试&#xff1a; 日志中多次出现“Master is currently unable to PSYNC but should be in the future: -NOMASTERLINK Can’t SYNC while not connected with my master”。这表明从服务器尝试与主服务器进行部分重同步&#xff08;PSYNC&#xff09;&#xff0c;但由…...

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…...