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

C#踩坑:谨慎在XML数据列上绑定鼠标事件!

  按照计划,昨天晚上就完成最后的公式自动计算,程序的流程就算完整了,可以正常运行了,一般情况下,是可以完成的。

  10点开始干,窗体上放置一个Treeview,然后针对XML对Treeview进行数据绑定,就是根据XML数据初始化Treeview的显示。

  这个前期也做过,很快就完成了。

  做一个调用窗体,放上一个DataGridView,里面显示所有设计XML计算公式的数据行。每个计算结果都对应一个XML数据列,因为计算结果是XML自动计算的结果,后面可能更改计算所以要保留XML的完整内容。

  在DataGridView的单元格双击事件(CellDoubleClick)中进行处理:

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e){float fField04 = 0;string StrField08Xml = "";//检查双击的单元格,弹出对应的计算窗口if (e.ColumnIndex == dataGridView1.Columns["F04"].Index){StrField08Xml = dataGridView1.Rows[e.RowIndex].Cells["Field08"].Value.ToString();FrmSXKNX Frm1 = new FrmSXKNX(StrField08Xml);DialogResult result = Frm1.ShowDialog();if (result == DialogResult.OK){fField04 = FrmSXKNX.ReturnInfo.fValue;StrField08Xml = FrmSXKNX.ReturnInfo.StrXml;dataGridView1.Rows[e.RowIndex].Cells["Field04"].Value = fField04;dataGridView1.Rows[e.RowIndex].Cells["Field08"].Value = StrField08Xml;}}//其他计算字段的处理//......}

  FrmSXKNX窗体的构造函数:

        public FrmSXKNX(){InitializeComponent();}public FrmSXKNX(string StrXml){InitializeComponent();StrXmlContent= StrXml;InitDataGridView();LoadXMLToTreeView();}

  结果开始让人不胜烦恼的踩坑!!!

  运行,双击DataGridView的列,程序阻塞,卡死,FrmSXKNX窗体根本不显示出来!

  这是什么问题?!

  难道是XML数据不对?数据没有正确的提取?

  检查,XML内容正确,格式也是正确的,XML数据长度13961字节,没问题。

  难道是XML太长了,渲染Treeview的时候用了递归导致程序阻塞?将XML字段数据改小一些,结果还是卡死。

  我将LoadXMLToTreeView();放到一个按钮下执行,构造函数只接收参数,开始竟然可以通过,程序正常了!

  可是这样也不是解决办法,就将LoadXMLToTreeView();放到窗体的Shown事件中,可是程序又卡死了。

  太奇怪了!

  那就使用异步处理:

        private  asyn void FrmSXKNX_Shown(object sender, EventArgs e){await Task.Delay(1000);init();LoadXMLToTreeView();}

  结果程序还是卡死!!!

  是不是窗体FrmSXKNX本身出了问题,检查FrmSXKNX.Designer.cs也没有发现异常,就做一个最简单的调用,结果也是好的。

  那只能是DataGridView的单元格双击事件(CellDoubleClick)有问题了,可是这代码再简单不过了,怎么会有问题?!

  干脆隐藏XML列,双击Field04列后调用FrmSXKNX,结果,程序正常了!!!

  终于明白了,原来是XML列出了问题!!!因为我没有限制XML列为只读,导致双击该列的时候会有编辑提取XML列数据内容并进行编辑的准备,这部分工作比较耗时,所以程序阻塞了。

  这个坑就是以后编辑XML,在DataGridView上最好是隐藏该列,如果要处理这一列,可以放置一个按钮列,或者对应到其他的列进行处理。

  如果一定要绑定鼠标事件,那么可以将该列置为只读,或者减小该字段的大小。

  昨天忽然明白为什么有许多不喜欢Visual Studio的C#,C#的确内涵丰富、功能强大,可是Visual Studio实在不好用,臃肿拉胯甚至远不如VSCode轻巧灵活,比如事件编辑,为了避免代码混乱,可以封装这些编辑,让用户进行事件选择后直接编写代码,至于事件前面的修饰符号可以选择就行了,可以通过在事件前面加图标来显示该事件的编写状态,空的不显示,有代码的显示为一种图标,是继承的显示另外的图标或者颜色,等等。

  这样至少可以避免很多的人为问题,代码看起来也规整,方便追溯。

相关文章:

C#踩坑:谨慎在XML数据列上绑定鼠标事件!

按照计划,昨天晚上就完成最后的公式自动计算,程序的流程就算完整了,可以正常运行了,一般情况下,是可以完成的。 10点开始干,窗体上放置一个Treeview,然后针对XML对Treeview进行数据绑定&#xf…...

逻辑代数运算

逻辑代数运算中的三种基本运算 与(AND):只有满足全部条件,才会产生结果 或(OR) :只要满足一个条件,就会产生结果 非(NOT):只要满足条件&#xff…...

win10笔记本显示器根据页面显示亮度自动调节亮度的问题

系统是win10企业版,针对这个问题查了很多种方法,比如: 1、控制面板->硬件和声音->电源选项->点击当前电源计划的更改计划设置->更改高级电源设置->显示->启用自适应亮度 但是我发现我的电源计划只有平衡这一种&#xff0c…...

无人驾驶实战-第一课(自动驾驶概述)

在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 无人驾驶汽车的定义…...

15.节点操作

15.1 DOM节点 1.DOM节点 DOM树里每一个内容都称之为节点 2.节点类型 ●元素节点 所有的标签 比如body、div html是根节点 ●属性节点 所有的属性 比如href ●文本节点 所有的文本 15.2查找节点 1.父节点查找: parentNode属性 返回最近一级的父节点找不到返回为n…...

C语言自定义类型 — 结构体、位段、枚举、联合

前言 本期主要对通讯录三篇博客文章进行补充 通讯录文章:通讯录系列文章 对结构体进行详细介绍,其次讲解位段、枚举、联合体 文章目录 前言一、结构体1.什么是结构体2.结构声明2.1 声明格式2.2 如何声明(代码演示) 3.特殊声明3.1…...

新手指南:流程图中各种图形的含义及用法解析

我们经常在技术设计、沟通、业务演示等一些领域看到流程图,它也可以称为输入输出图。顾名思义,它是指一种简单的工作流程的具体步骤,比如包括一次会议的流程,以及一次生产制造的顺序和过程等。本文将为大家介绍流程图的含义和具体…...

【知识产权】专利的弊端

接上篇【知识产权】著作权的作用_qilei2010的博客-CSDN博客。 ​ 1 专利的分类 首先,专利分为:发明专利、实用新型专利、外观设计专利。这里要说明的是专利的不同种类在不同的国家都是有不同规定的,并不是所有国家和地区都是分成这三类。 >国家法律法规数据库 >中华…...

用Rust实现23种设计模式之抽象工厂

在 Rust 中,可以使用 trait 和泛型来实现抽象工厂模式。抽象工厂模式是一种创建型设计模式,它提供了一个接口来创建一系列相关或依赖对象的家族,而无需指定具体的类。下面是一个简单的示例,展示了如何使用 Rust 实现抽象工厂模式&…...

31.利用linprog 解决 投资问题(matlab程序)

1.简述 语法:[X,FVAL] linprog(f,a,b,Aeq,Beq,LB,UB,X0); X 为最终解 , FVAL为最终解对应的函数值 *注意:求最大值时,结果FVAL需要取反* f 为决策函数的系数矩阵。 *注意:当所求为最大值…...

整数线性规划求解工具isl使用方法

整数线性规划求解工具 Integer Set Library 代码 参考 isl是一个用于多面体模型调度实现的c/c库。通过isl,我们可以对模型进行自动的调度,循环优化等。 编译 ISL,Integer Set Library 版本0.22.1,http://isl.gforge.inria.fr/ README关于…...

SystemC的调度器

文章目录 前言调度器初始化evaluatewait updatenotify delta notificationtime notification仿真结束 前言 SystemC是基于C的库,主要用来对 IC 进行功能建模和性能建模。有时也被用来当做 RTL (register transfer level) 级的升级版 HLS(High Level synthesis) 直接…...

SpringBoot、SpringCloud 版本查看

1、SpringBoot 官网地址 https://spring.io/projects/spring-boot#learn spring-boot-starter-parent 版本列表可查看: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent 2、SpringCloud 官网地址 https://spring.io/pro…...

AI Chat 设计模式:12. 享元模式

本文是该系列的第十二篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 给我介绍一下享元模式A.1Q.2 也就是说,其实共享的是对象的内部状态&…...

Spring mvc:SpringServletContainerInitializer

SpringServletContainerInitializer实现了Servlet3.0规范中定义的ServletContainerInitializer&#xff1a; public interface ServletContainerInitializer {void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException; }SpringServletCont…...

微信小程序中的全局数据共享(状态管理)使用介绍

开发工具&#xff1a;微信开发者工具Stable 1.06 一、状态管理简介 微信小程序全局状态是指可以在不同页面之间共享的数据或状态。 它可以存储用户的登录状态、个人信息、全局配置信息等。 二、安装MobX 1、安装NPM 在资源管理器的空白地方点右键&#xff0c;选择“在外部…...

LLM - LLama 模型读取报错 TypeError: not a string

一.引言 读取 LLama2 模型时报错 TypeError: not a string 看异常栈是 AutoTokenizer.from_pretrained 时候的异常。 二.问题解决 出现类似加载模型异常的问题&#xff0c;大致分两类&#xff1a; ◆ 模型地址异常 脚本里传的 pretrained_model Path 有问题&#xff0c;加 …...

2023年08月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年08月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多&#xff0c;人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…...

k8s的架构

简介 一个 K8s 系统&#xff0c;通常称为一个 K8s 集群&#xff0c;集群主要包括两个部分 一个 Master 节点&#xff08;主节点&#xff09; 一群 Node 节点&#xff08;计算节点&#xff09; Master节点 Master 节点包括 API Server、Scheduler、Controller manager、etcd A…...

数据分析基础-Excel图表的美化操作(按照教程一步步操作)

一、原始数据 包含月份和对应的销量和产量。 时间销量产量1月60722月38673月28344月58685月67596月72357月61428月24319月556710月243511月122112月2645 二、原始的图表设计-采用Excel自带模板 三、优化思路 1、删除多余元素 2、弱化次要元素 对于可以弱化的元素&#xff0c…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...