质检第二次代码
完整代码一次性补齐改动清单:PipeCheckUserControl:增加【执行质检】按钮;实现分组勾选联动子节点(勾选组自动全选/取消子检查项,勾选全部子项自动勾选父组)QCItemConfigForm:完整实现BuildCommonArea(实时读取ZwCAD图层、图层多选、排除图层、实体类型多选)QCItemConfigForm:完整实现BuildDynamicParamArea动态控件渲染 +CollectControlValue回写字典全部补空,窗体打开就有完整配置界面,兼容.NET4.7 + ZwCAD .NET API保持原有变量、命名风格,和你现有代码无缝对接图层控件使用CheckedListBox;实体类型固定选项(LINE、LWPOLYLINE、CIRCLE、ARC、INSERT)1. 更新 PipeCheckUserControl.cs(增加执行质检按钮 + 分组勾选联动)using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using CommBaseDB.QCConfig; namespace PipeQC.UI { public partial class PipeCheckUserControl : UserControl { private TreeView _treeQC; private ContextMenuStrip _treeContextMenu; private Button _btnRunQC; public PipeCheckUserControl() { this.SuspendLayout(); this.Size = new Size(310, 480); // 主容器,上面放按钮,下面放TreeView TableLayoutPanel tableMain = new TableLayoutPanel(); tableMain.Dock = DockStyle.Fill; tableMain.RowCount = 2; tableMain.RowStyles.Add(new RowStyle(SizeType.Absolute, 36)); tableMain.RowStyles.Add(new RowStyle(SizeType.Percent, 100)); //执行质检按钮 _btnRunQC = new Button(); _btnRunQC.Text = "执行质检"; _btnRunQC.Dock = DockStyle.Fill; _btnRunQC.Click += BtnRunQC_Click; tableMain.Controls.Add(_btnRunQC, 0, 0); //TreeView _treeQC = new TreeView(); _treeQC.Dock = DockStyle.Fill; _treeQC.CheckBoxes = true; _treeQC.ShowLines = true; _treeQC.ShowPlusMinus = true; //右键菜单 _treeContextMenu = new ContextMenuStrip(); var menuConfig = new ToolStripMenuItem("参数配置"); menuConfig.Click += MenuConfig_Click; var menuReset = new ToolStripMenuItem("重置为默认参数"); menuReset.Click += MenuResetDefault_Click; _treeContextMenu.Items.Add(menuConfig); _treeContextMenu.Items.Add(menuReset); _treeQC.ContextMenuStrip = _treeContextMenu; _treeQC.NodeMouseClick += TreeQC_NodeMouseClick; _treeQC.AfterCheck += TreeQC_AfterCheck; tableMain.Controls.Add(_treeQC, 0, 1); this.Controls.Add(tableMain); this.ResumeLayout(false); //加载树数据 LoadCheckTree(); } //加载树,分组 private void LoadCheckTree() { _treeQC.Nodes.Clear(); var metaList = QCConfigDB.Instance.GetAllMeta(); var groups = metaList.GroupBy(m = m.GroupName).ToList(); foreach (var g in groups) { TreeNode groupNode = new TreeNode(g.Key); groupNode.Tag = "GROUP"; foreach (var itemMeta in g) { var userCfg = QCConfigDB.Instance.GetUserConfig(itemMeta.CheckItemId); TreeNode itemNode = new TreeNode(itemMeta.ItemShowName); itemNode.Tag = itemMeta; itemNode.Checked = userCfg.IsEnable; groupNode.Nodes.Add(itemNode); } _treeQC.Nodes.Add(groupNode); groupNode.Expand(); //初始化父节点勾选状态(子全部勾选则父勾选) SyncGroupNodeCheck(groupNode); } } //区分点击分组/检查项,右键仅检查项弹出配置 private void TreeQC_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button != MouseButtons.Right) return; if (e.Node.Tag is QCItemMeta) _treeQC.SelectedNode = e.Node; else e.Node.ContextMenuStrip = null; } //复选框勾选,【分组联动逻辑】 private void TreeQC_AfterCheck(object sender, TreeViewEventArgs e) { //关闭递归触发 _treeQC.AfterCheck -= TreeQC_AfterCheck; try { if (e.Node.Tag is string tag tag == "GROUP") { //点击分组节点:同步所有子项勾选状态 foreach (TreeNode child in e.Node.Nodes) { child.Checked = e.Node.Checked; QCItemMeta meta = child.Tag as QCItemMeta; if (meta != null) { var userCfg = QCConfigDB.Instance.GetUserConfig(meta.CheckItemId); userCfg.IsEnable = child.Checked; QCConfigDB.Instance.SaveUserConfig(userCfg); } } } else if (e.Node.Tag is QCItemMeta) { //点击子检查项:保存状态,同步父分组勾选 QCItemMeta meta = e.Node.Tag as QCItemMeta; var userCfg = QCConfigDB.Instance.GetUserConfig(meta.CheckItemId); userCfg.IsEnable = e.Node.Checked; QCConfigDB.Instance.SaveUserConfig(userCfg); //同步父节点状态 SyncGroupNodeCheck(e.Nod

相关新闻

Codex 与 Claude Code 实测:AI 编程助手的真实能力边界与配置指南

Codex 与 Claude Code 实测:AI 编程助手的真实能力边界与配置指南

最近一个月,我至少刷到二十条类似的短视频:主播把 Codex 或 Claude Code 拉进终端,敲一句“帮我写一个股票交易软件”,屏幕上的代码飞速滚动,几分钟后一个带 K 线、能下单的网页应用就出来了。评论区清一色“这也太强了…

2026/10/10 21:00:50 阅读更多 →
ponytail 插件:让 Git 输出告别话痨,清爽如马尾

ponytail 插件:让 Git 输出告别话痨,清爽如马尾

1. 认识 ponytail:把 Git 的“头发”扎起来1.1 它是什么,为什么叫这个名先解释下这个名字。ponytail 直译是“马尾辫”,做开发的朋友一听应该有点画面感:一头散乱的长发,扎成马尾之后干净利落、清爽好打理。这个命令行…

2026/10/10 17:42:52 阅读更多 →
RTSP协议分析

RTSP协议分析

一、RTSP 方法总览RTSP 是一种基于文本的控制协议,所有交互由请求(Request)和响应(Response)构成。方法定义在 RFC 2326 中,核心方法如下:方法方向说明OPTIONSC→S查询服务器支持的方法列表&…

2026/10/10 19:43:02 阅读更多 →

最新新闻

对象生命周期与资源管线:游戏引擎架构深度解析

对象生命周期与资源管线:游戏引擎架构深度解析

游戏引擎架构深度解析(四):游戏对象与资源管理做引擎底层做了这些年,我越来越觉得,游戏引擎表面上拼的是渲染效果、物理表现这些"看得见"的东西,但真正决定一个引擎好不好用、项目团队能不能顺畅…

2026/10/10 21:04:49 阅读更多 →
谈canvas转图片的方法(base64编码):用TaoToken统一Key跑通前端导出链路

谈canvas转图片的方法(base64编码):用TaoToken统一Key跑通前端导出链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 21:04:49 阅读更多 →
36Kr 连发“去AI味“报道:AI 味焦虑正在从程序员烧向整个内容圈

36Kr 连发“去AI味“报道:AI 味焦虑正在从程序员烧向整个内容圈

36Kr 连发"去AI味"报道:AI 味焦虑正在从程序员烧向整个内容圈 【免费下载链接】humanizer Agent skill that removes signs of AI-generated writing from text 项目地址: https://gitcode.com/GitHub_Trending/humani/humanizer 一个原本只在程序…

2026/10/10 21:04:49 阅读更多 →
Android Contacts 联系人读取实战:从权限申请到 Cursor Base URL 改到 TaoToken 的完整链路

Android Contacts 联系人读取实战:从权限申请到 Cursor Base URL 改到 TaoToken 的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 21:04:49 阅读更多 →
无师自通的项目式学习法:用TaoToken统一Key跑通AI辅助C++编程项目

无师自通的项目式学习法:用TaoToken统一Key跑通AI辅助C++编程项目

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 21:04:49 阅读更多 →
VFS核心对象inode深度剖析:元数据、生命周期与inode耗尽排查

VFS核心对象inode深度剖析:元数据、生命周期与inode耗尽排查

在Linux内核里,如果只允许挑一个结构体来代表“文件系统”,那一定非inode莫属。它既不像dentry那样只负责路径和名字映射,也不像file那样随每次open而来、close而去;inode是整个VFS层的中枢对象,一头连着磁盘上的元数据…

2026/10/10 21:03:48 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →