diff --git a/cadbt/cadbt/cadcj/AdvancedDataGridView.dll b/cadbt/cadbt/cadcj/AdvancedDataGridView.dll deleted file mode 100644 index f520283..0000000 Binary files a/cadbt/cadbt/cadcj/AdvancedDataGridView.dll and /dev/null differ diff --git a/cadbt/cadbt/cadcj/CadPlugin.cs b/cadbt/cadbt/cadcj/CadPlugin.cs deleted file mode 100644 index 940ca0b..0000000 --- a/cadbt/cadbt/cadcj/CadPlugin.cs +++ /dev/null @@ -1,350 +0,0 @@ -// ============================================================ -// CAD 2018 插件入口(cadcj.dll) -// · 实现 IExtensionApplication,在 CAD 启动时自动加载 -// · 注册命令 "CADCJ" 打开 Form3 报价窗口 -// · 使用 PaletteSet 把 Form3 嵌成 CAD 可停靠工具栏窗口 -// 启动时自动贴靠到 CAD 左侧,用户可拖到右/上/下边或浮动 -// · 编译:/target:library /platform:x64 -// · 加载:在 CAD 里 NETLOAD 选择 cadcj.dll,然后输入 CADCJ 命令 -// ============================================================ -using System; -using Autodesk.AutoCAD.Runtime; -using Autodesk.AutoCAD.ApplicationServices; -using Autodesk.AutoCAD.Windows; -using Autodesk.AutoCAD.DatabaseServices; -using Autodesk.AutoCAD.EditorInput; -using AcAp = Autodesk.AutoCAD.ApplicationServices.Application; - -[assembly: CommandClass(typeof(MyApp.CadPlugin))] -[assembly: ExtensionApplication(typeof(MyApp.CadPlugin))] - -namespace MyApp -{ - /// - /// CAD 2018 插件入口。CAD 启动时自动初始化,注册 CADCJ 命令打开报价窗口。 - /// 报价窗口用 PaletteSet 承载,可像 CAD 工具选项板一样停靠/浮动。 - /// - public class CadPlugin : IExtensionApplication - { - // PaletteSet 单例:CAD 里常驻,可停靠 - private static PaletteSet _ps = null; - // Form3 单例(作为 PaletteSet 的内容) - private static Form3 _form3 = null; - // ★ 宿主容器:PaletteSet 只加 Panel,Form3 塞进去(规避主题同步崩溃) - private static System.Windows.Forms.Panel _hostPanel = null; - - #region IExtensionApplication 成员 - - public void Initialize() - { - // ★ 最简单的文件日志,不依赖任何外部代码,确认 Initialize 是否被调用 - try - { - string logPath = System.IO.Path.Combine( - System.IO.Path.GetDirectoryName( - new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath), - "cadcj_load.log"); - System.IO.File.WriteAllText(logPath, - "[" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] Initialize 被调用" + System.Environment.NewLine); - } - catch { } - - // ★ 解决 CAD 安全提示:把插件目录添加到 TRUSTEDPATHS,并关闭 SECURELOAD - // 这样 CAD 不会每次都弹"始终加载/加载一次"的安全提示 - try - { - string pluginDir = System.IO.Path.GetDirectoryName( - new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath); - - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) - { - // ★ 关闭 SECURELOAD(0=不检查可执行文件签名) - try - { - object sl = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("SECURELOAD"); - if (sl == null || Convert.ToInt32(sl) != 0) - { - Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("SECURELOAD", 0); - } - } - catch { } - - // ★ 把插件目录添加到 TRUSTEDPATHS - object cur = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("TRUSTEDPATHS"); - string curPaths = cur == null ? "" : cur.ToString(); - bool found = false; - string[] parts = curPaths.Split(';'); - foreach (string p in parts) - { - if (string.Equals(p.Trim(), pluginDir.Trim(), System.StringComparison.OrdinalIgnoreCase)) - { - found = true; - break; - } - } - if (!found) - { - string newPaths = string.IsNullOrEmpty(curPaths) ? pluginDir : curPaths + ";" + pluginDir; - Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("TRUSTEDPATHS", newPaths); - } - } - } - catch (System.Exception ex) - { - try - { - var doc0 = AcAp.DocumentManager.MdiActiveDocument; - if (doc0 != null) doc0.Editor.WriteMessage("\n[CADCJ] 设置可信路径失败: " + ex.Message); - } - catch { } - } - - try - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) - { - doc.Editor.WriteMessage("\n[CADCJ] 成套报价插件已加载,报价窗口将随文档自动打开。"); - } - // ★ 监听文档创建/激活事件:每次新建/打开文件时自动显示报价窗口 - AcAp.DocumentManager.DocumentCreated += OnDocumentCreated; - - // ★ 关键修复:acaddoc.lsp 的 NETLOAD 发生在文档已打开之后, - // DocumentCreated 事件早已错过;且 Idle 事件在挂接时若 CAD 已空闲 - // 可能永不触发 → 改为直接显示(Initialize 在命令上下文里可安全创建 UI) - if (AcAp.DocumentManager.MdiActiveDocument != null && _ps == null && _form3 == null) - { - PluginLog("[Initialize] 直接调用 OpenForm3"); - OpenForm3(); - } - } - catch (System.Exception ex2) - { - PluginLog("[Initialize] ⚠ 直接打开失败: " + ex2.Message); - } - } - - /// 文档创建时自动打开/显示报价窗口(停靠左侧)。 - private void OnDocumentCreated(object sender, DocumentCollectionEventArgs e) - { - try - { - // 延迟到 Idle 时执行,避免在文档创建过程中操作 UI - AcAp.Idle -= OnCadIdleShowPalette; - AcAp.Idle += OnCadIdleShowPalette; - } - catch { } - } - - /// Idle 时显示报价窗口(只执行一次后取消订阅)。 - private void OnCadIdleShowPalette(object sender, EventArgs e) - { - AcAp.Idle -= OnCadIdleShowPalette; - try - { - OpenForm3(); - } - catch { } - } - - public void Terminate() - { - try - { - if (_ps != null) - { - _ps.Visible = false; - _ps = null; - } - if (_form3 != null && !_form3.IsDisposed) - { - _form3.Dispose(); - _form3 = null; - } - } - catch { } - } - - #endregion - - #region 命令 - - /// CADCJ 命令:打开/激活报价窗口(PaletteSet,可停靠)。 - [CommandMethod("CADCJ", CommandFlags.Modal)] - public void OpenForm3() - { - try - { - // 已有 PaletteSet 则激活显示并重新停靠到左侧 - if (_ps != null) - { - _ps.Visible = true; - try - { - _ps.DockEnabled = DockSides.Left; - _ps.Dock = DockSides.Left; - } - catch { } - return; - } - - PluginLog("[CADCJ] OpenForm3 开始"); - - // 新建 Form3,转成子控件模式嵌入容器 - _form3 = new Form3(); - _form3.TopLevel = false; - _form3.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; - _form3.Dock = System.Windows.Forms.DockStyle.Fill; - _form3.Visible = true; - PluginLog("[CADCJ] Form3 就绪"); - - // ★ 根治 ResyncToTheme 崩溃:PaletteSet 只加 UserControl 容器, - // 不直接加 Form(CAD 主题同步强改 Form.BackColor 会抛 - // "控件不支持透明的背景色")。Form3 塞进 Panel 再加。 - _hostPanel = new System.Windows.Forms.Panel(); - _hostPanel.Dock = System.Windows.Forms.DockStyle.Fill; - _hostPanel.BackColor = System.Drawing.SystemColors.Control; - _hostPanel.Controls.Add(_form3); - - // 新建 PaletteSet - _ps = new PaletteSet("扒图", new System.Guid("A3F2B5C1-7D8E-4A6B-9C0D-1E2F3A4B5C6D")); - PluginLog("[CADCJ] PaletteSet 创建成功"); - - _ps.Style = PaletteSetStyles.Snappable - | PaletteSetStyles.UsePaletteNameAsTitleForSingle; - _ps.Add("扒图", _hostPanel); - PluginLog("[CADCJ] Add 成功"); - - // ★ 启动时自动贴靠到 CAD 左侧,并设置足够尺寸 - _ps.Size = new System.Drawing.Size(540, 800); - _ps.MinimumSize = new System.Drawing.Size(300, 400); - - // ★ 先显示,再设置停靠(CAD PaletteSet 的特殊行为) - _ps.Visible = true; - PluginLog("[CADCJ] Visible=true 完成"); - - // ★ 启用左侧停靠 + 强制停靠到左侧 - _ps.DockEnabled = DockSides.Left; - _ps.Dock = DockSides.Left; - PluginLog("[CADCJ] OpenForm3 全部完成 ✓"); - } - catch (System.Exception ex) - { - PluginLog("[CADCJ] ⚠ 打开窗口失败: " + ex); - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) - { - doc.Editor.WriteMessage("\n[CADCJ] 打开窗口失败: " + ex.Message); - } - } - } - - /// 插件级文件日志(写 cadcj 目录 diag.log,独立于 Form3)。 - private static void PluginLog(string msg) - { - try - { - string dir = System.IO.Path.GetDirectoryName( - new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath); - System.IO.File.AppendAllText(System.IO.Path.Combine(dir, "diag.log"), - DateTime.Now.ToString("HH:mm:ss.fff") + " " + msg + System.Environment.NewLine); - } - catch { } - } - - // ============================================================ - // 扒图号/扒箱号/扒元件 命令 - // · 由 Form3 的按钮通过 SendStringToExecute 触发 - // · 只允许框选 DBText/MText(过滤掉线条) - // · 选中文本用半透明颜色高亮 - // · 选中的文本传回 Form3 插入到对应表格 - // ============================================================ - - /// 扒图号命令:CADPATU - [CommandMethod("CADPATU", CommandFlags.Modal)] - public void PaTuhaoCommand() - { - ExecutePaCommand(MyApp.PaMode.Tuhao); - } - - /// 扒箱号命令:CADPAXH - [CommandMethod("CADPAXH", CommandFlags.Modal)] - public void PaXianghaoCommand() - { - ExecutePaCommand(MyApp.PaMode.Xianghao); - } - - /// 扒元件命令:CADPAYJ - [CommandMethod("CADPAYJ", CommandFlags.Modal)] - public void PaYuanjianCommand() - { - ExecutePaCommand(MyApp.PaMode.Yuanjian); - } - - /// 清除所有高亮颜色命令:CADPACL - [CommandMethod("CADPACL", CommandFlags.Modal)] - public void PaClearCommand() - { - try - { - PaTextSelector.ClearAllHighlight(); - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) doc.Editor.WriteMessage("\n[扒数据] 已清除所有染色文本。"); - } - catch (System.Exception ex) - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) doc.Editor.WriteMessage("\n[扒数据] 清除失败: " + ex.Message); - } - } - - /// 执行扒数据命令的核心逻辑(连续框选模式)。 - private void ExecutePaCommand(PaMode mode) - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc == null) return; - var ed = doc.Editor; - try - { - // 订阅事件:每次框选完一批文本,立即通过 Invoke 调用 Form3 的插入方法 - PaTextSelector.BatchTextsPicked -= OnPaBatchTextsPicked; - PaTextSelector.BatchTextsPicked += OnPaBatchTextsPicked; - - // 进入连续框选循环(直到用户按 ESC) - PaTextSelector.PickTextsContinuous(mode); - - // 用户按 ESC 退出后,触发一次最终的"完成"提示(可选) - ed.WriteMessage("\n[扒数据] 已退出连续模式。"); - - // 取消订阅 - PaTextSelector.BatchTextsPicked -= OnPaBatchTextsPicked; - } - catch (System.Exception ex) - { - ed.WriteMessage("\n[扒数据] 异常: " + ex.Message); - } - } - - /// PaTextSelector 事件回调:把一批文本+框Handle传给 Form3 插入到表格。 - private void OnPaBatchTextsPicked(PaMode mode, System.Collections.Generic.List results) - { - if (_form3 == null || _form3.IsDisposed) return; - try - { - _form3.Invoke(new System.Action(() => - { - try { _form3.OnPaTextsPicked(mode, results); } - catch (System.Exception ex) - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) doc.Editor.WriteMessage("\n[扒数据] 插入数据异常: " + ex.Message); - } - })); - } - catch { } - } - - #endregion - } -} diff --git a/cadbt/cadbt/cadcj/Form.xml b/cadbt/cadbt/cadcj/Form.xml deleted file mode 100644 index 9f96b48..0000000 --- a/cadbt/cadbt/cadcj/Form.xml +++ /dev/null @@ -1,1527 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
diff --git a/cadbt/cadbt/cadcj/Form3.cs b/cadbt/cadbt/cadcj/Form3.cs deleted file mode 100644 index 4b461f5..0000000 --- a/cadbt/cadbt/cadcj/Form3.cs +++ /dev/null @@ -1,6658 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Drawing; -using System.IO; -using System.Windows.Forms; -using Microsoft.Win32; -using Zuby.ADGV; - -namespace MyApp -{ - /// - /// Form3 的交互逻辑(CAD 2018 插件报价窗口)。 - /// 功能与主项目报价页面一致:项目表 + 图号/箱号/元件三级联动 + 公式重算 + 右键菜单 + 项目导出。 - /// UI 布局定义见 Form3.ui.cs。数据库独立存放在 cadcj\sjk\ 目录。 - /// - public partial class Form3 - { - // ============================================================ - // 数据库路径与表名常量(独立于主项目,存放在 cadcj\sjk\ 下) - // ============================================================ - - private const string ProjectsDbPath = @"sjk\advancedDataGridView6Table.db"; - private const string ProjectsTableName = "advancedDataGridView6Table"; - private const string QuoteDbDir = @"sjk\bjb"; - private const string TuhaoTableName = "advancedDataGridView9Table"; - private const string ProjectInfoTableName = "项目信息"; - private const string IndexTableName = "表索引"; - - private const string CadRegPath = @"SOFTWARE\Autodesk\AutoCAD\R22.0\ACAD-1001:804\Apps\CADCJ"; - - /// - /// 插件所在目录(cadcj)。优先从注册表读取 CAD 自动加载的 DLL 路径(最可靠), - /// 然后尝试 CodeBase / Location,最后兜底 BaseDirectory(可能是 CAD 目录,会报错)。 - /// - private static readonly string _baseDir = GetPluginBaseDir(); - - private static string GetPluginBaseDir() - { - // ★ 方案1(最可靠):从注册表读取 CAD 自动加载配置的 MODULE 路径 - try - { - using (var key = Registry.LocalMachine.OpenSubKey(CadRegPath)) - { - if (key != null) - { - var module = key.GetValue("MODULE") as string; - if (!string.IsNullOrEmpty(module)) - { - var dir = Path.GetDirectoryName(module); - if (!string.IsNullOrEmpty(dir) && Directory.Exists(dir)) - { - WriteDebugLog("[GetPluginBaseDir] 注册表方案成功: " + dir); - return dir; - } - } - } - } - } - catch (Exception ex) { WriteDebugLog("[GetPluginBaseDir] 注册表方案异常: " + ex.Message); } - - // ★ 方案2:CodeBase(不受 shadow copy 影响) - try - { - var codeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase; - WriteDebugLog("[GetPluginBaseDir] CodeBase=" + codeBase); - if (!string.IsNullOrEmpty(codeBase)) - { - var localPath = new Uri(codeBase).LocalPath; - var dir = Path.GetDirectoryName(localPath); - if (!string.IsNullOrEmpty(dir) && Directory.Exists(dir)) - { - WriteDebugLog("[GetPluginBaseDir] CodeBase方案成功: " + dir); - return dir; - } - } - } - catch (Exception ex) { WriteDebugLog("[GetPluginBaseDir] CodeBase方案异常: " + ex.Message); } - - // ★ 方案3:Location - try - { - var loc = System.Reflection.Assembly.GetExecutingAssembly().Location; - WriteDebugLog("[GetPluginBaseDir] Location=" + loc); - if (!string.IsNullOrEmpty(loc)) - { - var dir = Path.GetDirectoryName(loc); - if (!string.IsNullOrEmpty(dir) && Directory.Exists(dir)) - { - WriteDebugLog("[GetPluginBaseDir] Location方案成功: " + dir); - return dir; - } - } - } - catch (Exception ex) { WriteDebugLog("[GetPluginBaseDir] Location方案异常: " + ex.Message); } - - // ★ 方案4(最后兜底):BaseDirectory(CAD 目录,数据库会找不到) - var fallback = AppDomain.CurrentDomain.BaseDirectory; - WriteDebugLog("[GetPluginBaseDir] ⚠ 兜底BaseDirectory=" + fallback + " (数据库会找不到!)"); - return fallback; - } - - private static void WriteDebugLog(string msg) - { - try - { - var logDir = Path.Combine( - Path.GetDirectoryName( - new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath), - "sjk"); - if (!Directory.Exists(logDir)) logDir = Path.GetTempPath(); - var logPath = Path.Combine(logDir, "form3_path_debug.log"); - File.AppendAllText(logPath, - "[" + DateTime.Now.ToString("HH:mm:ss") + "] " + msg + Environment.NewLine); - } - catch { } - } - - // ============================================================ - // 当前层级选中状态(联动核心) - // ============================================================ - - private string _currentProjectId = ""; - private string _currentTuhao = ""; - private string _currentXianghao = ""; - private bool _isReloading = false; - private bool _isRecalculating = false; - private DateTime _lastRecalcTime = DateTime.MinValue; - - // 价格显示格式化配置(每个项目独立,随项目信息表加载) - private string _单台小数位文本 = "保留2位小数"; - private string _单台取整方式 = "不取整"; - private string _项目小数位文本 = "保留2位小数"; - private string _项目取整方式 = "不取整"; - - // 当前各表的内存数据(用于关闭/切换时回写数据库) - private DataTable _tuhaoTable; - private DataTable _xianghaoTable; - private DataTable _yuanjianTable; - - // 内存缓存:切换图号/箱号时不丢编辑,点保存才写库 - private Dictionary _xianghaoCache = new Dictionary(); - private Dictionary _yuanjianCache = new Dictionary(); - - // 右键菜单组件(运行时创建,不在设计器 XML 里) - private ContextMenuStrip _menuTuhao; - private ContextMenuStrip _menuXianghao; - private ContextMenuStrip _menuYuanjian; - - private static readonly string[] ProjectInfoColumns = - { - "项目编号", "项目名称", "客户名称", "客户地址", - "联系人", "联系电话", "项目日期", "备注", - "成套厂名称", "成套厂地址", "成套厂联系人", "成套厂联系电话", - "单台小数位", "单台取整方式", "项目小数位", "项目取整方式" - }; - - /// 公式计算列集合(只包含程序算出来的价格列)。 - private static readonly HashSet s_公式列集合 = - new HashSet(StringComparer.OrdinalIgnoreCase) - { - "表价", "采购单价", "采购价", "报出单价", "报出价", - "单台成本", "成本价", "单台报出", "利润", - "单价", "总价", "成本总价", "毛利", - "成本总价", "报出总价", "利润" - }; - - /// 构造函数:初始化 UI 并绑定事件。 - public Form3() - { - InitializeComponent(); - - // ★ 立即创建数据库(不依赖 Load 事件,UserControl 嵌入 PaletteSet 时 Load 可能延迟) - try - { - Log("[Form3] _baseDir = " + _baseDir); - Log("[Form3] ProjectsDbPath = " + GetDbFullPath(ProjectsDbPath)); - EnsureProjectDbExists(GetDbFullPath(ProjectsDbPath)); - Log("[Form3] 数据库创建/验证成功"); - } - catch (System.Exception ex) - { - Log("[Form3] 数据库创建失败: " + ex.Message); - } - - // ★ 诊断:后续初始化步骤逐步打点(定位面板空白问题) - try - { - Log("[Form3.init] 开始双缓冲设置"); - EnableDoubleBuffered(this.advancedDataGridView6); - EnableDoubleBuffered(this.advancedDataGridView9); - EnableDoubleBuffered(this.advancedDataGridView4); - EnableDoubleBuffered(this.advancedDataGridView5); - Log("[Form3.init] 双缓冲完成"); - - ApplyReadOnlyColumns(this.advancedDataGridView6, new string[] { - "项目编号", "项目名称", "客户名称", "客户地址", "联系人", "联系电话", - "项目日期", "箱柜台数", "成本总价", "报出总价", "利润", "利润率", "备注" - }); - ApplyReadOnlyColumns(this.advancedDataGridView9, new string[] { - "序号", "箱柜数量", "单价", "总价", "成本总价", "毛利", "毛利率" - }); - ApplyReadOnlyColumns(this.advancedDataGridView4, new string[] { - "序号", "单台成本", "成本价", "单台报出", "报出价", "利润", "利润率", "毛利率" - }); - ApplyReadOnlyColumns(this.advancedDataGridView5, new string[] { - "序号", "采购单价", "采购价", "报出单价", "报出价" - }); - Log("[Form3.init] 只读列完成"); - - // 工具栏按钮事件 - this.toolStripButton1.Click += toolStripButton1_Click; - this.toolStripButton5.Click += toolStripButton5_Click; - this.toolStripButton6.Click += toolStripButton6_Click; - this.toolStripButton2.Click += (s, e) => SendCadPaCommand("CADPATU"); - this.toolStripButton3.Click += (s, e) => SendCadPaCommand("CADPAXH"); - this.toolStripButton4.Click += (s, e) => SendCadPaCommand("CADPAYJ"); - this.toolStripButton7.Click += (s, e) => ShowDeepSeekSettings(); - Log("[Form3.init] 工具栏事件完成"); - - this.button28.Click += button28_Click; - this.advancedDataGridView6.CellDoubleClick += advancedDataGridView6_CellDoubleClick; - - this.advancedDataGridView9.SelectionChanged += advancedDataGridView9_SelectionChanged; - this.advancedDataGridView4.SelectionChanged += advancedDataGridView4_SelectionChanged; - this.advancedDataGridView5.SelectionChanged += advancedDataGridView5_SelectionChanged; - - this.advancedDataGridView9.CellClick += Grid_CellClick_Zoom; - this.advancedDataGridView4.CellClick += Grid_CellClick_Zoom; - this.advancedDataGridView5.CellClick += Grid_CellClick_Zoom; - - this.advancedDataGridView5.CellValueChanged += Yuanjian_CellValueChanged; - this.advancedDataGridView4.CurrentCellDirtyStateChanged += Grid_DirtyStateChanged; - this.advancedDataGridView4.CellValueChanged += Xianghao_CellValueChanged; - this.advancedDataGridView9.CurrentCellDirtyStateChanged += Grid_DirtyStateChanged; - this.advancedDataGridView9.CellValueChanged += Tuhao_CellValueChanged; - - this.advancedDataGridView5.CellEndEdit += Grid_CellEndEdit; - this.advancedDataGridView4.CellEndEdit += Grid_CellEndEdit; - this.advancedDataGridView9.CellEndEdit += Grid_CellEndEdit; - - this.advancedDataGridView5.DataError += (s, e) => { e.Cancel = true; }; - this.advancedDataGridView4.DataError += (s, e) => { e.Cancel = true; }; - this.advancedDataGridView9.DataError += (s, e) => { e.Cancel = true; }; - this.advancedDataGridView6.DataError += (s, e) => { e.Cancel = true; }; - - this.advancedDataGridView9.MouseDown += Grid_MouseDown_KeepMultiSelect; - this.advancedDataGridView4.MouseDown += Grid_MouseDown_KeepMultiSelect; - this.advancedDataGridView5.MouseDown += Grid_MouseDown_KeepMultiSelect; - - this.advancedDataGridView9.KeyDown += Grid_KeyDown_Delete; - this.advancedDataGridView4.KeyDown += Grid_KeyDown_Delete; - this.advancedDataGridView5.KeyDown += Grid_KeyDown_Delete; - Log("[Form3.init] 表格事件完成"); - - BuildContextMenus(); - Log("[Form3.init] 右键菜单完成"); - - this.Disposed += Form3_Disposed; - - this.Load += (s, e) => - { - try - { - EnsureProjectDbExists(GetDbFullPath(ProjectsDbPath)); - ReloadProjectsFromDatabase(); - ApplyPriceFormat(this.advancedDataGridView6, _项目小数位文本); - this.advancedDataGridView9.DataSource = null; - this.advancedDataGridView4.DataSource = null; - this.advancedDataGridView5.DataSource = null; - Log("[Form3.Load] 初始化完成"); - } - catch (System.Exception ex) - { - Log("[Form3.Load] 初始化异常: " + ex.Message); - } - - try - { - var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; - if (doc != null) - { - doc.Database.ObjectErased -= Database_ObjectErased; - doc.Database.ObjectErased += Database_ObjectErased; - Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.DocumentActivated -= - DocumentManager_DocumentActivated; - Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.DocumentActivated += - DocumentManager_DocumentActivated; - } - } - catch (System.Exception ex) - { - Log("[Form3.Load] 订阅ObjectErased失败: " + ex.Message); - } - }; - Log("[Form3.init] 构造函数全部完成 ✓"); - } - catch (System.Exception ex) - { - Log("[Form3.init] ⚠ 初始化异常: " + ex.ToString()); - } - } - - // ★ 当前订阅过事件的Database,用于取消旧订阅 - private Autodesk.AutoCAD.DatabaseServices.Database _erasedSubscribedDb; - - /// 切换文档时重新订阅 ObjectErased 事件。 - private void DocumentManager_DocumentActivated(object sender, - Autodesk.AutoCAD.ApplicationServices.DocumentCollectionEventArgs e) - { - try - { - if (_erasedSubscribedDb != null) - { - _erasedSubscribedDb.ObjectErased -= Database_ObjectErased; - _erasedSubscribedDb = null; - } - if (e.Document != null && e.Document.Database != null) - { - e.Document.Database.ObjectErased += Database_ObjectErased; - _erasedSubscribedDb = e.Document.Database; - } - } - catch (System.Exception ex) - { - Log("[DocumentActivated] 重订阅失败: " + ex.Message); - } - } - - /// - /// ★ CAD 中实体被删除时触发。如果删除的是 __CADCJ_PA_FRAME 图层上的扒图框, - /// 通过 Handle 查找当前项目下的图号表/箱号表/元件表对应行,同步删除。 - /// ★ 注意:不依赖 ent.Layer 过滤(Erased 状态下 Layer 可能读不到), - /// 直接用 Handle 去数据库查,查到就说明是扒图框。 - /// - private void Database_ObjectErased(object sender, - Autodesk.AutoCAD.DatabaseServices.ObjectErasedEventArgs e) - { - try - { - if (e == null || e.DBObject == null) return; - // ★ 如果正在通过表格删除(_isReloading=true),跳过 CAD 事件触发的删除 - // 避免表格删除和 CAD 事件删除互相干扰导致蒙版/数据不一致 - if (_isReloading) return; - var ent = e.DBObject as Autodesk.AutoCAD.DatabaseServices.Entity; - if (ent == null) return; - string handle = ent.Handle.ToString(); - if (string.IsNullOrWhiteSpace(handle)) return; - - // ★ 不再依赖 Layer 过滤:直接用 Handle 去数据库查 - // 如果数据库里能找到这个 Handle,说明就是扒图框,直接删除对应行 - Log("[ObjectErased] 触发! Handle=" + handle); - - this.BeginInvoke((Action)(() => - { - try - { - // 再次检查(异步执行时状态可能已变化) - if (_isReloading) { Log("[ObjectErased] _isReloading=true,跳过"); return; } - DeleteRowsByFrameHandle(handle); - } - catch (System.Exception ex) - { - Log("[ObjectErased.BeginInvoke] 异常: " + ex.Message); - } - })); - } - catch (System.Exception ex) - { - Log("[ObjectErased] 异常: " + ex.Message); - } - } - - /// - /// 根据框Handle在当前项目的图号表/箱号表/元件表中删除对应数据行。 - /// - private void DeleteRowsByFrameHandle(string frameHandle) - { - if (string.IsNullOrWhiteSpace(frameHandle)) return; - if (string.IsNullOrWhiteSpace(_currentProjectId)) { Log("[DeleteRowsByFrameHandle] _currentProjectId 为空,放弃"); return; } - _isReloading = true; - try - { - string dbPath = GetQuoteDbPath(_currentProjectId); - if (!File.Exists(dbPath)) { Log("[DeleteRowsByFrameHandle] 数据库不存在: " + dbPath); return; } - - bool deleted = false; - string deletedTuhao = null; - string deletedXianghao = null; - // ★ 收集级联删除的框Handle(图号→箱号→元件,删除数据时同步删蒙版) - var cascadeFrames = new List(); - - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - - // 1) 图号表 - using (var sel = new System.Data.SQLite.SQLiteCommand( - "SELECT 图号 FROM " + TuhaoTableName + " WHERE 框Handle=@fh;", conn)) - { - sel.Parameters.AddWithValue("@fh", frameHandle); - using (var reader = sel.ExecuteReader()) - { - if (reader.Read()) - { - deletedTuhao = reader.IsDBNull(0) ? "" : reader.GetString(0); - Log("[DeleteRowsByFrameHandle] 命中图号表: " + deletedTuhao); - } - } - } - if (!string.IsNullOrWhiteSpace(deletedTuhao)) - { - // ★ 删除图号前,先收集该图号下所有箱号和元件的框Handle(级联删蒙版) - CollectFrameHandlesForTuhao(_currentProjectId, deletedTuhao, cascadeFrames); - DeleteTuhao(_currentProjectId, deletedTuhao); - deleted = true; - } - - if (!deleted) - { - // 2) 箱号表:通过表索引找到所有箱号表,逐个查 - List allXhTables = new List(); - using (var selIdx = new System.Data.SQLite.SQLiteCommand( - "SELECT 实际表名, 图号 FROM 表索引 WHERE 类型='箱号';", conn)) - using (var rIdx = selIdx.ExecuteReader()) - { - while (rIdx.Read()) - { - string realTbl = rIdx.IsDBNull(0) ? "" : rIdx.GetString(0); - string th = rIdx.IsDBNull(1) ? "" : rIdx.GetString(1); - if (!string.IsNullOrWhiteSpace(realTbl)) - allXhTables.Add(realTbl + "|" + th); - } - } - Log("[DeleteRowsByFrameHandle] 箱号表数量: " + allXhTables.Count); - foreach (string info in allXhTables) - { - string[] parts = info.Split('|'); - string realTbl = parts[0]; - string th = parts.Length > 1 ? parts[1] : ""; - using (var sel = new System.Data.SQLite.SQLiteCommand( - "SELECT 箱号 FROM \"" + realTbl + "\" WHERE 框Handle=@fh;", conn)) - { - sel.Parameters.AddWithValue("@fh", frameHandle); - using (var reader = sel.ExecuteReader()) - { - if (reader.Read()) - { - deletedTuhao = th; - deletedXianghao = reader.IsDBNull(0) ? "" : reader.GetString(0); - Log("[DeleteRowsByFrameHandle] 命中箱号表: 图号=" + th + " 箱号=" + deletedXianghao); - break; - } - } - } - if (!string.IsNullOrWhiteSpace(deletedXianghao)) break; - } - if (!string.IsNullOrWhiteSpace(deletedXianghao)) - { - // ★ 删除箱号前,先收集该箱号下元件表的框Handle(级联删蒙版) - CollectFrameHandlesForXianghao(_currentProjectId, deletedTuhao, deletedXianghao, cascadeFrames); - DeleteXianghao(_currentProjectId, deletedTuhao, deletedXianghao); - deleted = true; - } - } - - if (!deleted) - { - // 3) 元件表:通过表索引找到所有元件表,逐个查 - List allYjTables = new List(); - using (var selIdx = new System.Data.SQLite.SQLiteCommand( - "SELECT 实际表名, 图号, 箱号 FROM 表索引 WHERE 类型='元件';", conn)) - using (var rIdx = selIdx.ExecuteReader()) - { - while (rIdx.Read()) - { - string realTbl = rIdx.IsDBNull(0) ? "" : rIdx.GetString(0); - string th = rIdx.IsDBNull(1) ? "" : rIdx.GetString(1); - string xh = rIdx.IsDBNull(2) ? "" : rIdx.GetString(2); - if (!string.IsNullOrWhiteSpace(realTbl)) - allYjTables.Add(realTbl + "|" + th + "|" + xh); - } - } - Log("[DeleteRowsByFrameHandle] 元件表数量: " + allYjTables.Count + " 查找Handle=" + frameHandle); - foreach (string info in allYjTables) - { - string[] parts = info.Split('|'); - string realTbl = parts[0]; - string th = parts.Length > 1 ? parts[1] : ""; - string xh = parts.Length > 2 ? parts[2] : ""; - // ★ 先列出该表所有的框Handle,排查是否真的写进去了 - using (var selAll = new System.Data.SQLite.SQLiteCommand( - "SELECT 序号, 框Handle FROM \"" + realTbl + "\";", conn)) - using (var rAll = selAll.ExecuteReader()) - { - while (rAll.Read()) - { - string s = rAll.IsDBNull(0) ? "" : rAll.GetString(0); - string h = rAll.IsDBNull(1) ? "" : rAll.GetString(1); - Log(" [元件表 " + realTbl + "] 序号=" + s + " 框Handle=[" + h + "]"); - } - } - using (var sel = new System.Data.SQLite.SQLiteCommand( - "SELECT COUNT(*) FROM \"" + realTbl + "\" WHERE 框Handle=@fh;", conn)) - { - sel.Parameters.AddWithValue("@fh", frameHandle); - object cnt = sel.ExecuteScalar(); - int matchCount = (cnt != null && cnt != DBNull.Value) ? Convert.ToInt32(cnt) : 0; - if (matchCount > 0) - { - deletedTuhao = th; - deletedXianghao = xh; - Log("[DeleteRowsByFrameHandle] 命中元件表: 图号=" + th + " 箱号=" + xh + " 匹配行数=" + matchCount); - - // ★ 直接用框Handle 删除所有匹配行(解决重复行问题) - using (var delCmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM \"" + realTbl + "\" WHERE 框Handle=@fh;", conn)) - { - delCmd.Parameters.AddWithValue("@fh", frameHandle); - int affected = delCmd.ExecuteNonQuery(); - Log("[DeleteRowsByFrameHandle] DELETE 完成,影响行数=" + affected); - } - deleted = true; - break; - } - } - } - } - } - - if (deleted) - { - Log("[DeleteRowsByFrameHandle] 删除成功: Handle=" + frameHandle + " cascadeFrames=" + cascadeFrames.Count); - - _xianghaoCache.Clear(); - _yuanjianCache.Clear(); - - // 重新编号(直接操作数据库) - if (!string.IsNullOrWhiteSpace(deletedTuhao) && !string.IsNullOrWhiteSpace(deletedXianghao)) - { - string yjTbl = GetYuanjianTableByIndex(_currentProjectId, deletedTuhao, deletedXianghao); - if (!string.IsNullOrEmpty(yjTbl)) - RenumberTable(_currentProjectId, "\"" + yjTbl + "\""); - string xhTbl = GetXianghaoTableByIndex(_currentProjectId, deletedTuhao); - if (!string.IsNullOrEmpty(xhTbl)) - RenumberTable(_currentProjectId, "\"" + xhTbl + "\""); - } - else if (!string.IsNullOrWhiteSpace(deletedTuhao)) - { - string xhTbl = GetXianghaoTableByIndex(_currentProjectId, deletedTuhao); - if (!string.IsNullOrEmpty(xhTbl)) - RenumberTable(_currentProjectId, "\"" + xhTbl + "\""); - } - - // ★ 直接在数据库层面重算(不经过内存表,不触发回写) - try { RecalcAllFromDatabase(_currentProjectId); } catch { } - - // ★ 从数据库重新加载到 UI(覆盖内存表,确保 UI 与数据库一致) - if (!string.IsNullOrWhiteSpace(deletedTuhao) && !string.IsNullOrWhiteSpace(deletedXianghao)) - { - if (_currentTuhao == deletedTuhao) - { - ReloadXianghaoByTuhao(_currentProjectId, deletedTuhao); - if (_currentXianghao == deletedXianghao) - ReloadYuanjianByXianghao(_currentProjectId, deletedTuhao, deletedXianghao); - } - } - else if (!string.IsNullOrWhiteSpace(deletedTuhao)) - { - ReloadTuhaoByProject(_currentProjectId); - if (_currentTuhao == deletedTuhao) - ReloadXianghaoByTuhao(_currentProjectId, deletedTuhao); - } - - // ★ 删除级联的框实体(图号删除时,其下箱号和元件的蒙版也要删除) - Log("[DeleteRowsByFrameHandle] cascadeFrames 数量: " + cascadeFrames.Count + " 当前Handle=" + frameHandle); - if (cascadeFrames.Count > 0) - { - // ★ 收集后一次性批量删除(排除当前正在删除的 frameHandle,已由 CAD 端删除) - var toDel = new List(); - foreach (string h in cascadeFrames) - { - if (h != frameHandle) toDel.Add(h); - } - if (toDel.Count > 0) - { - Log("[DeleteRowsByFrameHandle] 级联删除框Handle数: " + toDel.Count); - DeleteFramesByHandles(toDel); - } - SaveCurrentDwg(); - Log("[DeleteRowsByFrameHandle] 级联删除完成"); - } - } - } - finally - { - _isReloading = false; - } - } - - /// 重写 OnLoad:在所有 Load 事件订阅者之前确保项目库文件存在。 - protected override void OnLoad(EventArgs e) - { - try { EnsureProjectDbExists(GetDbFullPath(ProjectsDbPath)); } - catch { } - base.OnLoad(e); - } - - // ============================================================ - // 通用辅助方法 - // ============================================================ - - private void Log(string msg) - { - try - { - string logPath = Path.Combine(_baseDir, "diag.log"); - File.AppendAllText(logPath, - DateTime.Now.ToString("HH:mm:ss.fff") + " " + msg + "\r\n"); - } - catch { } - } - - private string GetDbFullPath(string relativePath) - { - return Path.Combine(_baseDir, relativePath); - } - - private string GetConnString(string dbPath) - { - // ★ busy_timeout=3000:数据库被 CAD 或其他进程短暂占用时等待重试而非卡死; - // Pooling 关闭,避免连接池长期持有文件句柄 - return "Data Source=" + dbPath + ";Version=3;busy_timeout=3000;"; - } - - private string GetQuoteDbPath(string projectId) - { - string safeName = projectId; - char[] invalidChars = Path.GetInvalidFileNameChars(); - foreach (char c in invalidChars) safeName = safeName.Replace(c, '_'); - return GetDbFullPath(QuoteDbDir + @"\项目" + safeName + ".db"); - } - - private static decimal ParseDecimal(object v) - { - if (v == null || v == DBNull.Value) return 0m; - decimal d; - if (decimal.TryParse(v.ToString().Trim(), out d)) return d; - return 0m; - } - - private static DataGridViewColumn FindColumn(DataGridView dgv, string name) - { - if (dgv == null || dgv.Columns == null) return null; - foreach (DataGridViewColumn c in dgv.Columns) - { - if (c == null) continue; - if (c.DataPropertyName == name || c.HeaderText == name || c.Name == name) return c; - } - return null; - } - - private static string GetCellString(DataGridViewRow row, string name) - { - if (row == null || row.DataGridView == null) return ""; - DataGridViewColumn col = FindColumn(row.DataGridView, name); - if (col == null) return ""; - object v = row.Cells[col.Index].Value; - return v == null ? "" : v.ToString().Trim(); - } - - private static decimal GetCellDecimal(DataGridViewRow row, string name) - { - return ParseDecimal(GetCellString(row, name)); - } - - private static string GetCellValueAsString(DataGridViewRow row, string colName) - { - if (row == null || row.Cells == null || string.IsNullOrEmpty(colName)) return ""; - DataGridView grid = row.DataGridView; - if (grid != null) - { - foreach (DataGridViewColumn col in grid.Columns) - { - if (col == null) continue; - string key = !string.IsNullOrEmpty(col.DataPropertyName) - ? col.DataPropertyName - : (!string.IsNullOrEmpty(col.HeaderText) ? col.HeaderText : col.Name); - if (key == colName) - { - object v = row.Cells[col.Index].Value; - return v == null ? "" : v.ToString().Trim(); - } - } - } - return ""; - } - - private static void SetCell(DataGridViewRow row, string colName, decimal value) - { - if (row == null || row.DataGridView == null) return; - DataGridViewColumn col = FindColumn(row.DataGridView, colName); - if (col == null) return; - row.Cells[col.Index].Value = value == 0m ? 0d : (double)value; - } - - private static DataGridViewRow GetFirstSelectedRow(DataGridView dgv) - { - if (dgv == null || dgv.Rows == null || dgv.Rows.Count == 0) return null; - foreach (DataGridViewRow r in dgv.SelectedRows) - { - if (r == null || r.IsNewRow) continue; - return r; - } - if (dgv.CurrentRow != null && !dgv.CurrentRow.IsNewRow) return dgv.CurrentRow; - return null; - } - - private static List GetAllSelectedRows(DataGridView dgv) - { - var result = new List(); - if (dgv == null || dgv.Rows == null || dgv.Rows.Count == 0) return result; - var seenRows = new HashSet(); - if (dgv.SelectedRows != null) - { - foreach (DataGridViewRow r in dgv.SelectedRows) - { - if (r == null || r.IsNewRow) continue; - if (seenRows.Add(r.Index)) result.Add(r); - } - } - // ★ 总是通过 SelectedCells 补充收集(不再限制 result.Count == 0) - // ADGV 多选时 SelectedRows 可能不完整,SelectedCells 能覆盖所有选中行 - if (dgv.SelectedCells != null) - { - foreach (DataGridViewCell c in dgv.SelectedCells) - { - if (c == null || c.RowIndex < 0) continue; - DataGridViewRow r = dgv.Rows[c.RowIndex]; - if (r == null || r.IsNewRow) continue; - if (seenRows.Add(r.Index)) result.Add(r); - } - } - // 兜底:如果以上都没收集到,取当前行 - if (result.Count == 0 && dgv.CurrentRow != null && !dgv.CurrentRow.IsNewRow) - { - result.Add(dgv.CurrentRow); - } - return result; - } - - private DataGridViewRow GetFirstSelectedProjectRow() - { - DataGridView dgv = this.advancedDataGridView6; - if (dgv == null || dgv.Rows == null || dgv.Rows.Count == 0) return null; - foreach (DataGridViewRow r in dgv.SelectedRows) - { - if (r == null || r.IsNewRow) continue; - return r; - } - if (dgv.CurrentRow != null && !dgv.CurrentRow.IsNewRow) return dgv.CurrentRow; - return null; - } - - private DataGridViewRow FindProjectRowById(string projectId) - { - if (string.IsNullOrWhiteSpace(projectId)) return null; - DataGridView dgv = this.advancedDataGridView6; - if (dgv == null || dgv.Rows == null) return null; - foreach (DataGridViewRow r in dgv.Rows) - { - if (r == null || r.IsNewRow) continue; - if (GetCellValueAsString(r, "项目编号") == projectId) return r; - } - return null; - } - - private static void SetCurrentCell(DataGridView dgv, int rowIndex, int colIndex = 0) - { - if (dgv == null || dgv.Rows == null || rowIndex < 0 || rowIndex >= dgv.Rows.Count) return; - try - { - if (dgv.Rows[rowIndex].IsNewRow) return; - if (colIndex < 0 || colIndex >= dgv.Columns.Count) colIndex = 0; - dgv.ClearSelection(); - dgv.Rows[rowIndex].Selected = true; - dgv.CurrentCell = dgv.Rows[rowIndex].Cells[colIndex]; - } - catch { } - } - - private void SelectRowByValue(DataGridView dgv, string colName, string value) - { - if (dgv == null || dgv.Rows == null || string.IsNullOrEmpty(value)) return; - try - { - _isReloading = true; - foreach (DataGridViewRow r in dgv.Rows) - { - if (r == null || r.IsNewRow) continue; - if (GetCellValueAsString(r, colName) == value) - { - dgv.ClearSelection(); - r.Selected = true; - dgv.CurrentCell = r.Cells[0]; - return; - } - } - } - catch { } - finally { _isReloading = false; } - } - - private static int GetSelectedRowIndex(DataGridView dgv) - { - if (dgv == null) return -1; - if (dgv.CurrentRow == null || dgv.CurrentRow.IsNewRow) return -1; - return dgv.CurrentRow.Index; - } - - private static string MakeSafeFileName(string s) - { - if (string.IsNullOrEmpty(s)) return "未命名"; - string r = s; - char[] invalid = Path.GetInvalidFileNameChars(); - foreach (char c in invalid) r = r.Replace(c, '_'); - return r; - } - - private static string EscapeJsonString(string s) - { - if (s == null) return ""; - return s.Replace("\\", "\\\\").Replace("\"", "\\\"") - .Replace("\r", "\\r").Replace("\n", "\\n").Replace("\t", "\\t"); - } - - private string ShowInputDialog(string title, string prompt, string defaultValue) - { - using (var dlg = new Form()) - { - dlg.Text = title; - dlg.StartPosition = FormStartPosition.CenterParent; - dlg.FormBorderStyle = FormBorderStyle.FixedDialog; - dlg.MinimizeBox = false; - dlg.MaximizeBox = false; - dlg.Width = 340; - dlg.Height = 170; - - var lbl = new Label(); - lbl.Text = prompt; - lbl.Left = 12; lbl.Top = 15; - lbl.Width = 300; lbl.Height = 30; - dlg.Controls.Add(lbl); - - var txt = new TextBox(); - txt.Text = defaultValue; - txt.Left = 12; txt.Top = 55; - txt.Width = 300; - dlg.Controls.Add(txt); - - var btnOk = new Button(); - btnOk.Text = "确定"; - btnOk.Left = 210; btnOk.Top = 92; - btnOk.Width = 90; - btnOk.DialogResult = DialogResult.OK; - dlg.Controls.Add(btnOk); - - var btnCancel = new Button(); - btnCancel.Text = "取消"; - btnCancel.Left = 108; btnCancel.Top = 92; - btnCancel.Width = 90; - btnCancel.DialogResult = DialogResult.Cancel; - dlg.Controls.Add(btnCancel); - - dlg.AcceptButton = btnOk; - dlg.CancelButton = btnCancel; - - if (dlg.ShowDialog(this) == DialogResult.OK) return txt.Text; - return ""; - } - } - - /// 开启 DataGridView 的双缓冲(消除闪烁)。 - private static void EnableDoubleBuffered(DataGridView dgv) - { - if (dgv == null) return; - try - { - typeof(DataGridView).InvokeMember("DoubleBuffered", - System.Reflection.BindingFlags.SetProperty | - System.Reflection.BindingFlags.Instance | - System.Reflection.BindingFlags.NonPublic, - null, dgv, new object[] { true }); - } - catch { } - } - - /// 按列名设置只读(运行时按 DataPropertyName/HeaderText 查找)。 - private static void ApplyReadOnlyColumns(DataGridView dgv, string[] colNames) - { - if (dgv == null || colNames == null) return; - foreach (string name in colNames) - { - DataGridViewColumn col = FindColumn(dgv, name); - if (col != null) col.ReadOnly = true; - } - } - - // ============================================================ - // 价格显示格式化 - // ============================================================ - - /// 把"保留2位小数"/"保留整数"等转成 .NET 格式字符串(F0/F2)。 - private static string ToFormatString(string 小数位文本) - { - int n = 解析小数位(小数位文本); - if (n < 0) n = 2; - return "F" + n.ToString(); - } - - private static int 解析小数位(string text) - { - if (string.IsNullOrWhiteSpace(text)) return 2; - string t = text.Trim(); - if (t.Contains("整数")) return 0; - if (t.Contains("1位")) return 1; - if (t.Contains("2位")) return 2; - if (t.Contains("3位")) return 3; - if (t.Contains("4位")) return 4; - return 2; - } - - private void ApplyPriceFormat(DataGridView dgv, string 小数位文本) - { - if (dgv == null || dgv.Columns == null) return; - string fmt = ToFormatString(小数位文本); - foreach (DataGridViewColumn col in dgv.Columns) - { - if (col == null) continue; - string name = !string.IsNullOrEmpty(col.DataPropertyName) - ? col.DataPropertyName : col.HeaderText; - if (string.IsNullOrEmpty(name)) continue; - if (s_公式列集合.Contains(name)) - { - col.DefaultCellStyle.Format = fmt; - } - } - } - - /// 老库兼容:把 DataTable 中公式列的类型从 string 转为 double。 - private static DataTable ConvertFormulaColumnsToDouble(DataTable table) - { - if (table == null || table.Columns.Count == 0) return table; - bool needsConvert = false; - foreach (DataColumn dc in table.Columns) - { - if (s_公式列集合.Contains(dc.ColumnName) && dc.DataType == typeof(string)) - { - needsConvert = true; - break; - } - } - if (!needsConvert) return table; - - var newTable = new DataTable(); - foreach (DataColumn dc in table.Columns) - { - Type t = s_公式列集合.Contains(dc.ColumnName) ? typeof(double) : dc.DataType; - newTable.Columns.Add(dc.ColumnName, t); - } - foreach (DataRow row in table.Rows) - { - var newRow = newTable.NewRow(); - foreach (DataColumn dc in table.Columns) - { - if (s_公式列集合.Contains(dc.ColumnName)) - { - object v = row[dc]; - if (v == null || v == DBNull.Value) newRow[dc.ColumnName] = 0d; - else if (v is double) newRow[dc.ColumnName] = v; - else - { - double d; - newRow[dc.ColumnName] = double.TryParse(v.ToString().Trim(), out d) ? d : 0d; - } - } - else newRow[dc.ColumnName] = row[dc]; - } - newTable.Rows.Add(newRow); - } - newTable.TableName = table.TableName; - return newTable; - } - - // ============================================================ - // 数据库结构维护 - // ============================================================ - - private void EnsureProjectDbExists(string dbPath) - { - string dir = Path.GetDirectoryName(dbPath); - if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = - "CREATE TABLE IF NOT EXISTS " + ProjectsTableName + " (" + - " 项目编号 TEXT, 项目名称 TEXT, 客户名称 TEXT, 客户地址 TEXT," + - " 联系人 TEXT, 联系电话 TEXT, 项目日期 TEXT, 箱柜台数 REAL," + - " 成本总价 REAL, 报出总价 REAL, 利润 REAL, 利润率 REAL, 备注 TEXT" + - ");"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) cmd.ExecuteNonQuery(); - EnsureColumns(conn, ProjectsTableName, new[] { - "成套厂名称", "成套厂地址", "成套厂联系人", "成套厂联系电话" - }); - } - } - - private static void EnsureColumns(System.Data.SQLite.SQLiteConnection conn, string tableName, string[] columns) - { - if (columns == null || columns.Length == 0) return; - var existing = new HashSet(StringComparer.OrdinalIgnoreCase); - using (var infoCmd = new System.Data.SQLite.SQLiteCommand("PRAGMA table_info(" + tableName + ");", conn)) - using (var reader = infoCmd.ExecuteReader()) - { - while (reader.Read()) - { - object nameObj = reader["name"]; - if (nameObj != null && nameObj != DBNull.Value) existing.Add(nameObj.ToString()); - } - } - foreach (string col in columns) - { - if (!existing.Contains(col)) - { - string sql = "ALTER TABLE " + tableName + " ADD COLUMN " + col + " TEXT;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) cmd.ExecuteNonQuery(); - } - } - } - - private static List GetProjectTableColumns(System.Data.SQLite.SQLiteConnection conn) - { - var cols = new List(); - try - { - using (var infoCmd = new System.Data.SQLite.SQLiteCommand("PRAGMA table_info(" + ProjectsTableName + ");", conn)) - using (var reader = infoCmd.ExecuteReader()) - { - while (reader.Read()) - { - object nameObj = reader["name"]; - if (nameObj != null && nameObj != DBNull.Value) cols.Add(nameObj.ToString()); - } - } - } - catch { } - return cols; - } - - private void EnsureQuoteDbExists(string projectId) - { - if (string.IsNullOrWhiteSpace(projectId)) return; - string dbPath = GetQuoteDbPath(projectId); - string dir = Path.GetDirectoryName(dbPath); - if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); - - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sqlTuhao = - "CREATE TABLE IF NOT EXISTS " + TuhaoTableName + " (" + - " 序号 TEXT, 图号 TEXT, 图名 TEXT, 台数 TEXT, 箱柜数量 REAL," + - " 单价 REAL, 总价 REAL, 成本总价 REAL, 毛利 REAL, 毛利率 REAL," + - " 框Handle TEXT, 文本Handle TEXT" + - ");"; - string sqlIndex = - "CREATE TABLE IF NOT EXISTS 表索引 (" + - " 类型 TEXT, 图号 TEXT, 箱号 TEXT, 实际表名 TEXT" + - ");"; - string sqlProjectInfo = - "CREATE TABLE IF NOT EXISTS " + ProjectInfoTableName + " (" + - " 项目编号 TEXT, 项目名称 TEXT, 客户名称 TEXT, 客户地址 TEXT," + - " 联系人 TEXT, 联系电话 TEXT, 项目日期 TEXT, 备注 TEXT," + - " 成套厂名称 TEXT, 成套厂地址 TEXT, 成套厂联系人 TEXT, 成套厂联系电话 TEXT," + - " 单台小数位 TEXT, 单台取整方式 TEXT, 项目小数位 TEXT, 项目取整方式 TEXT" + - ");"; - foreach (string sql in new[] { sqlTuhao, sqlIndex, sqlProjectInfo }) - { - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) cmd.ExecuteNonQuery(); - } - EnsureColumns(conn, ProjectInfoTableName, new[] { - "成套厂名称", "成套厂地址", "成套厂联系人", "成套厂联系电话", - "单台小数位", "单台取整方式", "项目小数位", "项目取整方式" - }); - // ★ 确保旧库的图号表也有"框Handle"/"文本Handle"列 - EnsureColumns(conn, TuhaoTableName, new[] { "框Handle", "文本Handle" }); - } - } - - // ---------- 箱号表(每个图号一张独立表,表名=图号原名,双引号括起)---------- - - private static string GetXianghaoTableName(string tuhao) - { - if (string.IsNullOrWhiteSpace(tuhao)) return "\"图号箱号表\""; - return "\"" + tuhao.Replace("\"", "\"\"") + "\""; - } - - private void EnsureXianghaoTableExists(string projectId, string tuhao) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao)) return; - // 先查表索引,已有则跳过 - string existing = GetXianghaoTableByIndex(projectId, tuhao); - if (!string.IsNullOrEmpty(existing)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - // 用唯一ID做表名,避免图号名含特殊字符 - string realTbl = GetNextTableId(projectId, "箱号"); - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = - "CREATE TABLE \"" + realTbl + "\" (" + - " 序号 TEXT, 箱号 TEXT, 型号 TEXT, 规格 TEXT, 单位 TEXT, 数量 TEXT," + - " 单台成本 REAL, 成本价 REAL, 单台报出 REAL, 报出价 REAL," + - " 利润 REAL, 利润率 REAL, 毛利率 REAL, 箱柜类型 TEXT, 备注 TEXT, 图纸 TEXT," + - " 框Handle TEXT, 文本Handle TEXT" + - ");"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) cmd.ExecuteNonQuery(); - } - // ★ 注册到表索引,后续 GetXianghaoTableByIndex 才能查到 - AddTableIndex(projectId, "箱号", tuhao, "", realTbl); - } - catch { } - } - - private string GetXianghaoCount(string projectId, string tuhao) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao)) return "1"; - string realTbl = GetXianghaoTableByIndex(projectId, tuhao); - if (string.IsNullOrEmpty(realTbl)) return "1"; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return "1"; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "SELECT COUNT(*) FROM \"" + realTbl + "\";"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - int n = 0; - object o = cmd.ExecuteScalar(); - if (o != null && o != DBNull.Value) n = Convert.ToInt32(o); - return (n + 1).ToString(); - } - } - } - catch { return "1"; } - } - - // ---------- 元件计数(用于新建元件命名"新元件N")---------- - - private string GetYuanjianCount(string projectId, string tuhao, string xianghao) - { - if (string.IsNullOrWhiteSpace(projectId) || - string.IsNullOrWhiteSpace(xianghao)) return "1"; - // 查索引表拿该箱号元件表的真实表名 - string realTbl = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - if (string.IsNullOrEmpty(realTbl)) return "1"; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return "1"; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "SELECT COUNT(*) FROM \"" + realTbl + "\";"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - int n = 0; - object o = cmd.ExecuteScalar(); - if (o != null && o != DBNull.Value) n = Convert.ToInt32(o); - return (n + 1).ToString(); - } - } - } - catch { return "1"; } - } - - // ---------- 元件表(每个箱号一张独立表)---------- - - private static string GetYuanjianTableName(string xianghao) - { - if (string.IsNullOrWhiteSpace(xianghao)) return "\"元件表\""; - return "\"" + xianghao.Replace("\"", "\"\"") + "\""; - } - - private void EnsureYuanjianTableExists(string projectId, string tuhao, string xianghao) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao) || string.IsNullOrWhiteSpace(xianghao)) return; - // 先查表索引,已有则跳过 - string existing = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - if (!string.IsNullOrEmpty(existing)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - // 用唯一ID做表名 - string realTbl = GetNextTableId(projectId, "元件"); - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = - "CREATE TABLE \"" + realTbl + "\" (" + - " 序号 TEXT, 元件名称 TEXT, 规格 TEXT, 单位 TEXT, 数量 TEXT," + - " 表价 REAL, 采购单价 REAL, 采购系数 TEXT, 采购价 REAL," + - " 报出单价 REAL, 报出系数 TEXT, 报出价 REAL," + - " 图纸规格 TEXT, 品牌 TEXT, 系列 TEXT, 类型 TEXT, 备注 TEXT," + - " 框Handle TEXT, 文本Handle TEXT" + - ");"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) cmd.ExecuteNonQuery(); - } - // ★ 注册到表索引(类型=元件,图号,箱号) — 后续 GetYuanjianTableByIndex 才能查到 - AddTableIndex(projectId, "元件", tuhao, xianghao, realTbl); - } - catch { } - } - - // ---------- 表索引(用唯一ID做表名,索引表记录 图号/箱号 → 真实表名)---------- - - private string GetNextTableId(string projectId, string prefix) - { - if (string.IsNullOrWhiteSpace(projectId)) return prefix + "_1"; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return prefix + "_1"; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "SELECT 实际表名 FROM 表索引 WHERE 实际表名 LIKE @p;"; - int maxN = 0; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@p", prefix + "_%"); - using (var reader = cmd.ExecuteReader()) - { - while (reader.Read()) - { - string t = reader.IsDBNull(0) ? "" : reader.GetString(0); - string numPart = t.StartsWith(prefix + "_") ? t.Substring(prefix.Length + 1) : ""; - int n; - if (int.TryParse(numPart, out n) && n > maxN) maxN = n; - } - } - } - return prefix + "_" + (maxN + 1).ToString(); - } - } - catch { return prefix + "_1"; } - } - - private void AddTableIndex(string projectId, string type, string tuhao, string xianghao, string realTableName) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(realTableName)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "INSERT INTO 表索引 (类型, 图号, 箱号, 实际表名) VALUES (@t, @th, @xh, @real);"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@t", type); - cmd.Parameters.AddWithValue("@th", tuhao ?? ""); - cmd.Parameters.AddWithValue("@xh", xianghao ?? ""); - cmd.Parameters.AddWithValue("@real", realTableName); - cmd.ExecuteNonQuery(); - } - } - } - catch { } - } - - private void RemoveTableIndex(string projectId, string type, string tuhao, string xianghao) - { - if (string.IsNullOrWhiteSpace(projectId)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "DELETE FROM 表索引 WHERE 类型=@t AND 图号=@th AND 箱号=@xh;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@t", type); - cmd.Parameters.AddWithValue("@th", tuhao ?? ""); - cmd.Parameters.AddWithValue("@xh", xianghao ?? ""); - cmd.ExecuteNonQuery(); - } - } - } - catch { } - } - - private string GetXianghaoTableByIndex(string projectId, string tuhao) - { - return LookupTableByIndex(projectId, "箱号", tuhao, ""); - } - - private string GetYuanjianTableByIndex(string projectId, string tuhao, string xianghao) - { - return LookupTableByIndex(projectId, "元件", tuhao, xianghao); - } - - private string LookupTableByIndex(string projectId, string type, string tuhao, string xianghao) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao)) return ""; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return ""; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - return LookupTableByIndex(type, tuhao, xianghao, conn); - } - } - catch { return ""; } - } - - private string LookupTableByIndex(string type, string tuhao, string xianghao, System.Data.SQLite.SQLiteConnection conn) - { - if (conn == null || string.IsNullOrWhiteSpace(tuhao)) return ""; - try - { - string sql = "SELECT 实际表名 FROM 表索引 WHERE 类型=@t AND 图号=@th AND 箱号=@xh LIMIT 1;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@t", type); - cmd.Parameters.AddWithValue("@th", tuhao); - cmd.Parameters.AddWithValue("@xh", xianghao ?? ""); - object o = cmd.ExecuteScalar(); - return (o == null || o == DBNull.Value) ? "" : o.ToString(); - } - } - catch { return ""; } - } - - private string GetXianghaoTableByIndex(string tuhao, System.Data.SQLite.SQLiteConnection conn) - { - return LookupTableByIndex("箱号", tuhao, "", conn); - } - - private string GetYuanjianTableByIndex(string tuhao, string xianghao, System.Data.SQLite.SQLiteConnection conn) - { - return LookupTableByIndex("元件", tuhao, xianghao, conn); - } - - private void CreateXianghaoTable(string projectId, string realTableName) - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = - "CREATE TABLE \"" + realTableName + "\" (" + - " 序号 TEXT, 箱号 TEXT, 箱名 TEXT, 型号 TEXT, 规格 TEXT, 单位 TEXT, 数量 TEXT," + - " 单台成本 REAL, 成本价 REAL, 单台报出 REAL, 报出价 REAL," + - " 利润 REAL, 利润率 REAL, 毛利率 REAL, 箱柜类型 TEXT, 备注 TEXT, 图纸 TEXT" + - ");"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) cmd.ExecuteNonQuery(); - } - } - catch { } - } - - private void RenumberTable(string projectId, string quotedTableName) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(quotedTableName)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string selSql = "SELECT rowid FROM " + quotedTableName + " ORDER BY rowid;"; - var rowids = new List(); - using (var sel = new System.Data.SQLite.SQLiteCommand(selSql, conn)) - using (var reader = sel.ExecuteReader()) - { - while (reader.Read()) rowids.Add(reader.GetInt64(0)); - } - int newSeq = 1; - foreach (long rowid in rowids) - { - string updSql = "UPDATE " + quotedTableName + " SET 序号 = @seq WHERE rowid = @rid;"; - using (var upd = new System.Data.SQLite.SQLiteCommand(updSql, conn)) - { - upd.Parameters.AddWithValue("@seq", newSeq.ToString()); - upd.Parameters.AddWithValue("@rid", rowid); - upd.ExecuteNonQuery(); - } - newSeq++; - } - } - } - catch { } - } - - // ============================================================ - // 报价库「项目信息」表读写 - // ============================================================ - - private void InsertProjectInfoToQuoteDb(string projectId, Dictionary values) - { - if (string.IsNullOrWhiteSpace(projectId) || values == null) return; - EnsureQuoteDbExists(projectId); - string dbPath = GetQuoteDbPath(projectId); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string delSql = "DELETE FROM " + ProjectInfoTableName + " WHERE 项目编号 = @id;"; - using (var del = new System.Data.SQLite.SQLiteCommand(delSql, conn)) - { - del.Parameters.AddWithValue("@id", projectId); - del.ExecuteNonQuery(); - } - var cols = new List(); - var paras = new List(); - foreach (string c in ProjectInfoColumns) - { - if (values.ContainsKey(c)) { cols.Add(c); paras.Add("@" + c); } - } - if (cols.Count == 0) return; - string sql = "INSERT INTO " + ProjectInfoTableName + " (" + - string.Join(", ", cols.ToArray()) + ") VALUES (" + - string.Join(", ", paras.ToArray()) + ");"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - foreach (string c in cols) cmd.Parameters.AddWithValue("@" + c, values[c] ?? ""); - cmd.ExecuteNonQuery(); - } - } - } - - private Dictionary GetProjectInfoFromQuoteDb(string projectId) - { - var info = new Dictionary(); - if (string.IsNullOrWhiteSpace(projectId)) return info; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return info; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string chkSql = "SELECT name FROM sqlite_master WHERE type='table' AND name=@n;"; - using (var chk = new System.Data.SQLite.SQLiteCommand(chkSql, conn)) - { - chk.Parameters.AddWithValue("@n", ProjectInfoTableName); - if (chk.ExecuteScalar() == null) return info; - } - string sql = "SELECT * FROM " + ProjectInfoTableName + " WHERE 项目编号 = @id LIMIT 1;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@id", projectId); - using (var reader = cmd.ExecuteReader()) - { - if (reader.Read()) - { - var existCols = new HashSet(StringComparer.OrdinalIgnoreCase); - for (int i = 0; i < reader.FieldCount; i++) existCols.Add(reader.GetName(i)); - foreach (string c in ProjectInfoColumns) - { - if (!existCols.Contains(c)) continue; - object v = reader[c]; - info[c] = (v == null || v == DBNull.Value) ? "" : v.ToString(); - } - } - } - } - } - } - catch { } - return info; - } - - private void LoadPriceFormatConfig(string projectId) - { - _单台小数位文本 = "保留2位小数"; - _单台取整方式 = "不取整"; - _项目小数位文本 = "保留2位小数"; - _项目取整方式 = "不取整"; - try - { - var info = GetProjectInfoFromQuoteDb(projectId); - if (info == null || info.Count == 0) return; - string v; - if (info.TryGetValue("单台小数位", out v) && !string.IsNullOrWhiteSpace(v)) _单台小数位文本 = v; - if (info.TryGetValue("单台取整方式", out v) && !string.IsNullOrWhiteSpace(v)) _单台取整方式 = v; - if (info.TryGetValue("项目小数位", out v) && !string.IsNullOrWhiteSpace(v)) _项目小数位文本 = v; - if (info.TryGetValue("项目取整方式", out v) && !string.IsNullOrWhiteSpace(v)) _项目取整方式 = v; - } - catch { } - } - - // ============================================================ - // 项目库 CRUD - // ============================================================ - - private int InsertProjectToDatabase(Dictionary values) - { - if (values == null || values.Count == 0) return 0; - string dbPath = GetDbFullPath(ProjectsDbPath); - if (!File.Exists(dbPath)) - { - EnsureProjectDbExists(dbPath); - if (!File.Exists(dbPath)) - throw new FileNotFoundException("无法创建项目数据库文件: " + dbPath, dbPath); - } - int affected; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - var allowed = new HashSet(GetProjectTableColumns(conn), StringComparer.OrdinalIgnoreCase); - var colNames = new List(); - var paramNames = new List(); - foreach (string col in values.Keys) - { - if (allowed.Contains(col)) { colNames.Add(col); paramNames.Add("@" + col); } - } - if (colNames.Count == 0) { affected = 0; } - else - { - string sql = "INSERT INTO " + ProjectsTableName + " (" + - string.Join(", ", colNames.ToArray()) + ") VALUES (" + - string.Join(", ", paramNames.ToArray()) + ");"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - foreach (string col in colNames) cmd.Parameters.AddWithValue("@" + col, values[col]); - affected = cmd.ExecuteNonQuery(); - } - } - } - string projectId; - values.TryGetValue("项目编号", out projectId); - if (!string.IsNullOrWhiteSpace(projectId)) InsertProjectInfoToQuoteDb(projectId, values); - return affected; - } - - private int DeleteProjectFromDatabase(string projectId) - { - if (string.IsNullOrWhiteSpace(projectId)) return 0; - string dbPath = GetDbFullPath(ProjectsDbPath); - if (!File.Exists(dbPath)) throw new FileNotFoundException("找不到项目数据库文件: " + dbPath, dbPath); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "DELETE FROM " + ProjectsTableName + " WHERE 项目编号 = @id;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@id", projectId); - return cmd.ExecuteNonQuery(); - } - } - } - - private void CascadeDeleteByProject(string projectId) - { - if (string.IsNullOrWhiteSpace(projectId)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - try { File.Delete(dbPath); } - catch { } - } - - private List> ReadAllProjectsFromDatabase() - { - var list = new List>(); - try - { - string dbPath = GetDbFullPath(ProjectsDbPath); - if (!File.Exists(dbPath)) return list; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT * FROM " + ProjectsTableName + " ORDER BY rowid;", conn)) - using (var rd = cmd.ExecuteReader()) - { - while (rd.Read()) - { - var dict = new Dictionary(StringComparer.Ordinal); - for (int i = 0; i < rd.FieldCount; i++) - { - object v = rd.GetValue(i); - if (v == null || v == DBNull.Value) v = ""; - dict[rd.GetName(i)] = v; - } - list.Add(dict); - } - } - } - } - catch { } - return list; - } - - private Dictionary ReadProjectMetaData(string pid) - { - var dict = new Dictionary(StringComparer.Ordinal); - try - { - string dbPath = GetDbFullPath(ProjectsDbPath); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT * FROM " + ProjectsTableName + " WHERE 项目编号 = @p LIMIT 1;", conn)) - { - cmd.Parameters.AddWithValue("@p", pid); - using (var rd = cmd.ExecuteReader()) - { - if (!rd.Read()) return null; - for (int i = 0; i < rd.FieldCount; i++) - { - object v = rd.GetValue(i); - if (v == null || v == DBNull.Value) v = ""; - dict[rd.GetName(i)] = v; - } - } - } - } - } - catch { return null; } - return dict; - } - - // ============================================================ - // 图号/箱号/元件 CRUD - // ============================================================ - - private string GetNextSeqNumber(string tableName, string nameCol, string projectId, string tuhao = null) - { - if (string.IsNullOrWhiteSpace(projectId)) return "1"; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return "1"; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql; - if (tuhao == null) - { - sql = "SELECT COUNT(*) FROM " + tableName + ";"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - int n = 0; - object o = cmd.ExecuteScalar(); - if (o != null && o != DBNull.Value) n = Convert.ToInt32(o); - return (n + 1).ToString(); - } - } - else - { - sql = "SELECT COUNT(*) FROM " + tableName + " WHERE 图号 = @th;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@th", tuhao); - int n = 0; - object o = cmd.ExecuteScalar(); - if (o != null && o != DBNull.Value) n = Convert.ToInt32(o); - return (n + 1).ToString(); - } - } - } - } - catch { return "1"; } - } - - // ============================================================ - // 扒图号/扒箱号/扒元件:CAD 文本选择交互 - // ============================================================ - - /// - /// 向 CAD 发送扒数据命令,触发框选交互。 - /// ★ 关键:先发 ESC 取消当前可能正在进行的扒图循环,再发新命令 - /// 这样用户从"扒图号"循环里点"扒箱号"也能立即切换 - /// - private void SendCadPaCommand(string cmd) - { - try - { - var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; - if (doc == null) - { - MessageBox.Show(this, "未找到 CAD 文档,请在 CAD 中操作。", - "扒数据", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - - // ★ 先发两个 ESC 取消当前可能正在进行的扒图循环(等价于按两次 ESC 键) - // 不加任何尾随字符(空格会被 CAD 当作重复命令,可能触发帮助界面) - doc.SendStringToExecute("\x03\x03", false, false, false); - // 然后发送新命令(末尾加空格模拟回车) - doc.SendStringToExecute(cmd + " ", false, false, false); - } - catch (Exception ex) - { - MessageBox.Show(this, "发送CAD命令失败:\n" + ex.Message, - "扒数据", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - /// - /// CAD 选中文本后的回调:把选中的文本批量插入到对应表格。 - /// 由 CadPlugin.ExecutePaCommand 在 UI 线程调用。 - /// - public void OnPaTextsPicked(PaMode mode, List results) - { - if (results == null || results.Count == 0) return; - if (string.IsNullOrWhiteSpace(_currentProjectId)) - { - MessageBox.Show(this, "请先在项目表中双击选择一个项目,再扒数据。", - "扒数据", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - - switch (mode) - { - case PaMode.Tuhao: - PaTuhaoInsert(results); - break; - case PaMode.Xianghao: - PaXianghaoInsert(results); - break; - case PaMode.Yuanjian: - PaYuanjianInsert(results); - break; - } - } - - /// 扒图号:把选中文本作为图号批量插入到当前项目,同时保存框Handle。 - /// ★ 重复扒图:如果图号已存在,删除旧框和数据库行(不新增)。 - private void PaTuhaoInsert(List results) - { - string lastInsertedTuhao = null; // ★ 记录最后插入的图号,用于自动选中联动 - try - { - _isReloading = true; - // 先 AcceptChanges,避免 SaveAllQuoteTablesIfDirty 把旧内存表回写 - if (_tuhaoTable != null) _tuhaoTable.AcceptChanges(); - if (_xianghaoTable != null) _xianghaoTable.AcceptChanges(); - if (_yuanjianTable != null) _yuanjianTable.AcceptChanges(); - - // ★ 新增框架Handle列表: PaTextSelector刚画的框,如果是重复,需要删除这些新框 - var newFramesToErase = new List(); - int deletedCount = 0; - int inserted = 0; - - foreach (var r in results) - { - if (string.IsNullOrWhiteSpace(r.Text)) continue; - string clean = r.Text.Trim(); - // ★ 按"同一个文本实体"判断重复:查该文本实体Handle是否已入库。 - // 不同位置的相同内容文本 Handle 不同 → 不算重复,正常插入。 - string oldFrame = GetTuhaoFrameHandleByTextHandle(_currentProjectId, clean, r.TextHandle); - if (!string.IsNullOrEmpty(oldFrame)) - { - // ★ 重复(同一个文本再次选中):删除旧框+数据库行+新框 - DeleteTuhao(_currentProjectId, clean); - DeleteFrameByHandle(oldFrame); - if (!string.IsNullOrWhiteSpace(r.FrameHandle)) newFramesToErase.Add(r.FrameHandle); - deletedCount++; - } - else - { - InsertTuhao(_currentProjectId, clean, r.FrameHandle, r.TextHandle); - lastInsertedTuhao = clean; // ★ 记录最后插入的图号 - inserted++; - } - } - - // ★ 删除重复图号对应的新框(PaTextSelector已经画出来了,但不需要保留)——批量一次删 - DeleteFramesByHandles(newFramesToErase); - - _xianghaoCache.Clear(); - _yuanjianCache.Clear(); - - // 直接在数据库层面重算(不经过内存回写) - try { RecalcAllFromDatabase(_currentProjectId); } catch { } - ReloadTuhaoByProject(_currentProjectId); - - // 保存 - try - { - if (this.advancedDataGridView9 != null) this.advancedDataGridView9.EndEdit(); - if (_tuhaoTable != null) - { - SaveTableToDatabase(_tuhaoTable, _currentProjectId, TuhaoTableName, null, null, true); - _tuhaoTable.AcceptChanges(); - } - } - catch { } - SaveCurrentDwg(); - - if (deletedCount > 0 && inserted == 0) - { - Log("[PaTuhaoInsert] 删除了 " + deletedCount + " 条重复图号"); - } - } - catch (Exception ex) - { - MessageBox.Show(this, "扒图号失败:\n" + ex.Message, - "扒图号", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _isReloading = false; - // ★ 扒完图号后自动选中刚插入的图号行,联动刷新箱号表 - if (!string.IsNullOrWhiteSpace(lastInsertedTuhao)) - { - _currentTuhao = lastInsertedTuhao; - SelectRowByValue(this.advancedDataGridView9, "图号", lastInsertedTuhao); - // 手动联动刷新箱号表(SelectRowByValue 在 _isReloading 下不触发 SelectionChanged) - ReloadXianghaoByTuhao(_currentProjectId, lastInsertedTuhao); - } - } - } - - /// 扒箱号:把选中文本作为箱号批量插入到当前图号,同时保存框Handle。 - /// ★ 重复扒图:如果箱号已存在,删除旧框和数据库行(不新增)。 - private void PaXianghaoInsert(List results) - { - string lastInsertedXianghao = null; // ★ 记录最后插入的箱号,用于自动选中联动 - if (string.IsNullOrWhiteSpace(_currentTuhao)) - { - MessageBox.Show(this, "请先在图号表中选择一个图号,再扒箱号。", - "扒箱号", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - try - { - _isReloading = true; - // 先 AcceptChanges,避免 SaveAllQuoteTablesIfDirty 把旧内存表回写 - if (_tuhaoTable != null) _tuhaoTable.AcceptChanges(); - if (_xianghaoTable != null) _xianghaoTable.AcceptChanges(); - if (_yuanjianTable != null) _yuanjianTable.AcceptChanges(); - - var newFramesToErase = new List(); - int deletedCount = 0; - int inserted = 0; - - foreach (var r in results) - { - if (string.IsNullOrWhiteSpace(r.Text)) continue; - string clean = r.Text.Trim(); - // ★ 按"同一个文本实体"判断重复(不同位置的相同内容文本不算重复) - string oldFrame = GetXianghaoFrameHandleByTextHandle(_currentProjectId, _currentTuhao, clean, r.TextHandle); - if (!string.IsNullOrEmpty(oldFrame)) - { - // ★ 重复(同一个文本再次选中):删除旧框+数据库行+新框 - DeleteXianghao(_currentProjectId, _currentTuhao, clean); - DeleteFrameByHandle(oldFrame); - if (!string.IsNullOrWhiteSpace(r.FrameHandle)) newFramesToErase.Add(r.FrameHandle); - deletedCount++; - } - else - { - InsertXianghao(_currentProjectId, _currentTuhao, clean, r.FrameHandle, r.TextHandle); - lastInsertedXianghao = clean; // ★ 记录最后插入的箱号 - inserted++; - } - } - - DeleteFramesByHandles(newFramesToErase); - - _xianghaoCache.Clear(); - _yuanjianCache.Clear(); - - try { RecalcAllFromDatabase(_currentProjectId); } catch { } - ReloadXianghaoByTuhao(_currentProjectId, _currentTuhao); - - try - { - if (this.advancedDataGridView4 != null) this.advancedDataGridView4.EndEdit(); - if (_xianghaoTable != null && !string.IsNullOrWhiteSpace(_xianghaoTable.TableName)) - { - SaveTableToDatabase(_xianghaoTable, _currentProjectId, - "\"" + _xianghaoTable.TableName + "\"", null, null, true); - _xianghaoTable.AcceptChanges(); - } - } - catch { } - SaveCurrentDwg(); - - if (deletedCount > 0 && inserted == 0) - { - Log("[PaXianghaoInsert] 删除了 " + deletedCount + " 条重复箱号"); - } - } - catch (Exception ex) - { - MessageBox.Show(this, "扒箱号失败:\n" + ex.Message, - "扒箱号", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _isReloading = false; - // ★ 扒完箱号后自动选中刚插入的箱号行,联动刷新元件表 - if (!string.IsNullOrWhiteSpace(lastInsertedXianghao)) - { - _currentXianghao = lastInsertedXianghao; - SelectRowByValue(this.advancedDataGridView4, "箱号", lastInsertedXianghao); - // 手动联动刷新元件表(SelectRowByValue 在 _isReloading 下不触发 SelectionChanged) - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, lastInsertedXianghao); - } - } - } - - /// 扒元件:把选中文本作为【规格】批量插入到当前箱号(写到规格列),同时保存框Handle。 - /// ★ 关键:在单个事务里按 results 顺序依次插入,保证序号连续。 - /// ★ 重复扒图:如果规格已存在,删除旧框+数据库行(不新增)。 - private void PaYuanjianInsert(List results) - { - if (string.IsNullOrWhiteSpace(_currentXianghao)) - { - MessageBox.Show(this, "请先在箱号表中选择一个箱号,再扒元件。", - "扒元件", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - try - { - _isReloading = true; - // ★ 关键:先 AcceptChanges 清掉内存表的改动标记,避免 SaveAllQuoteTablesIfDirty - // 用旧的内存数据覆盖数据库 - if (_yuanjianTable != null) _yuanjianTable.AcceptChanges(); - if (_xianghaoTable != null) _xianghaoTable.AcceptChanges(); - if (_tuhaoTable != null) _tuhaoTable.AcceptChanges(); - EnsureQuoteDbExists(_currentProjectId); - string dbPath = GetQuoteDbPath(_currentProjectId); - EnsureYuanjianTableExists(_currentProjectId, _currentTuhao, _currentXianghao); - string tblName = GetYuanjianTableByIndex(_currentProjectId, _currentTuhao, _currentXianghao); - if (string.IsNullOrEmpty(tblName)) - { - MessageBox.Show("元件表创建失败(表索引未注册),图号=" + _currentTuhao + " 箱号=" + _currentXianghao); - return; - } - - // ★ 确保旧元件表也有"框Handle"/"文本Handle"列 - using (var connEns = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - connEns.Open(); - EnsureColumns(connEns, "\"" + tblName + "\"", new[] { "框Handle", "文本Handle" }); - } - - // 过滤掉空文本,保留原始顺序(同时保留框Handle+文本Handle) - var cleanResults = new List(); - foreach (var r in results) - { - if (!string.IsNullOrWhiteSpace(r.Text)) - { - cleanResults.Add(new PaTextResult - { - Text = r.Text.Trim(), - FrameHandle = r.FrameHandle ?? "", - TextHandle = r.TextHandle ?? "" - }); - } - } - if (cleanResults.Count == 0) return; - - // ★ 判断是否是逆向合并模式(所有result共用同一个框Handle且数量>1) - bool isMergeMode = cleanResults.Count > 1; - string mergeHandle = cleanResults[0].FrameHandle; - if (isMergeMode) - { - foreach (var r in cleanResults) - { - if (r.FrameHandle != mergeHandle) { isMergeMode = false; break; } - } - } - - // ★ 新增:重复检测辅助集合 - // newFramesToErase: PaTextSelector刚画的框,如果是重复项,这些框要删除 - var newFramesToErase = new List(); - // oldFrameHandlesToDelete: 数据库里匹配到的旧框,要删除 - var oldFrameHandlesToDelete = new List(); - // toInsert: 不重复、需要插入的项 - var toInsert = new List(); - // ★ 本地匹配失败的规格(收集后交给 DeepSeek AI 兜底识别) - var aiFailedSpecs = new List(); - int deletedCount = 0; - - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - - if (isMergeMode) - { - // ★ 合并模式:所有文本按图纸阅读顺序拼成一个规格 - // (PaTextSelector 已按列分组、列内从上到下排好序,保持此顺序 - // 与库中自然书写顺序一致,如 HD13BX-1500/31 + 1500A) - // 文本Handle串与文本一一对应拼接(同一批文本Handle集合相同即重复)。 - var orderedTexts = new List(); - var orderedHandles = new List(); - foreach (var r in cleanResults) - { - orderedTexts.Add(r.Text); - orderedHandles.Add(r.TextHandle ?? ""); - } - string mergedSpec = string.Join("", orderedTexts.ToArray()); - // ★ Handle串排序后拼接(Handle集合相同即同一批文本,与顺序无关) - var sortedHandles = new List(orderedHandles); - sortedHandles.Sort(StringComparer.Ordinal); - string mergedTextHandle = string.Join("|", sortedHandles.ToArray()); - - // ★ 1. 查"同一批文本实体"的合并规格是否已存在 - // (文本Handle拼接串相同 = 同一批文本再次被选中,才是真重复) - var matchFrames = new List(); - using (var selCmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + tblName + "\" WHERE 规格=@spec AND 文本Handle=@th;", conn)) - { - selCmd.Parameters.AddWithValue("@spec", mergedSpec); - selCmd.Parameters.AddWithValue("@th", mergedTextHandle); - using (var reader = selCmd.ExecuteReader()) - { - while (reader.Read()) - { - object v = reader["框Handle"]; - if (v != null && v != DBNull.Value) - { - string s = v.ToString(); - if (!string.IsNullOrWhiteSpace(s) && !matchFrames.Contains(s)) - matchFrames.Add(s); - } - } - } - } - - // ★ 2. 再查:本批每个文本实体是否已作为"独立元件"入库(按文本Handle精确匹配) - var perTextFrames = new List(); - var perTextSpecs = new List(); - foreach (var r in cleanResults) - { - List fhs = GetYuanjianFrameHandlesByTextHandle( - _currentProjectId, _currentTuhao, _currentXianghao, r.Text, r.TextHandle); - foreach (string fh in fhs) - { - if (!perTextFrames.Contains(fh)) perTextFrames.Add(fh); - } - if (fhs.Count > 0 && !perTextSpecs.Contains(r.Text)) perTextSpecs.Add(r.Text); - } - - // ★ 只要匹配到(1.同一批文本的合并规格 或 2.同一文本实体的独立元件) → 执行删除 - bool hitMergeMatch = matchFrames.Count > 0; - bool hitPerTextMatch = perTextSpecs.Count > 0; - - if (hitMergeMatch || hitPerTextMatch) - { - // ★ 删除:同一批文本的合并规格匹配的行(文本Handle+规格双条件) - if (hitMergeMatch) - { - using (var delCmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM \"" + tblName + "\" WHERE 规格=@spec AND 文本Handle=@th;", conn)) - { - delCmd.Parameters.AddWithValue("@spec", mergedSpec); - delCmd.Parameters.AddWithValue("@th", mergedTextHandle); - int aff = delCmd.ExecuteNonQuery(); - deletedCount += aff; - } - foreach (string fh in matchFrames) - if (!oldFrameHandlesToDelete.Contains(fh)) oldFrameHandlesToDelete.Add(fh); - } - // ★ 删除:同一文本实体的独立元件行(按文本Handle删除) - if (hitPerTextMatch) - { - foreach (var r in cleanResults) - { - if (string.IsNullOrWhiteSpace(r.TextHandle)) continue; - using (var selCmd2 = new System.Data.SQLite.SQLiteCommand( - "SELECT COUNT(*) FROM \"" + tblName + "\" WHERE 文本Handle=@th;", conn)) - { - selCmd2.Parameters.AddWithValue("@th", r.TextHandle); - object cnt = selCmd2.ExecuteScalar(); - int n = (cnt != null && cnt != DBNull.Value) ? Convert.ToInt32(cnt) : 0; - if (n > 0) - { - using (var delCmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM \"" + tblName + "\" WHERE 文本Handle=@th;", conn)) - { - delCmd.Parameters.AddWithValue("@th", r.TextHandle); - int aff = delCmd.ExecuteNonQuery(); - deletedCount += aff; - } - } - } - } - foreach (string fh in perTextFrames) - if (!oldFrameHandlesToDelete.Contains(fh)) oldFrameHandlesToDelete.Add(fh); - } - // ★ 删除 PaTextSelector 刚画的新合并框 - if (!string.IsNullOrWhiteSpace(mergeHandle)) - if (!newFramesToErase.Contains(mergeHandle)) - newFramesToErase.Add(mergeHandle); - Log("[PaYuanjianInsert] 合并模式:删除重复项 mergedMatch=" + hitMergeMatch - + " perTextMatch=" + hitPerTextMatch + ", 删除行数=" + deletedCount - + ", 删除旧框数=" + oldFrameHandlesToDelete.Count); - } - else - { - // ★ 没有匹配:新增一行(合并规格) - toInsert.Add(new PaTextResult - { - Text = mergedSpec, - FrameHandle = mergeHandle, - TextHandle = mergedTextHandle - }); - } - } - else - { - // ★ 正向模式:每个文本一条记录,按"同一个文本实体"判断是否重复 - foreach (var r in cleanResults) - { - // ★ 按文本Handle精确匹配:同一文本实体才删除, - // 不同位置的相同内容文本(Handle不同)正常插入 - List matchFrames = GetYuanjianFrameHandlesByTextHandle( - _currentProjectId, _currentTuhao, _currentXianghao, r.Text, r.TextHandle); - if (matchFrames.Count > 0) - { - // 重复:按文本Handle删除数据库行 + 旧框 + 新画的框 - using (var delCmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM \"" + tblName + "\" WHERE 文本Handle=@th;", conn)) - { - delCmd.Parameters.AddWithValue("@th", r.TextHandle); - int aff = delCmd.ExecuteNonQuery(); - deletedCount += aff; - } - foreach (string fh in matchFrames) oldFrameHandlesToDelete.Add(fh); - if (!string.IsNullOrWhiteSpace(r.FrameHandle)) newFramesToErase.Add(r.FrameHandle); - } - else - { - toInsert.Add(r); - } - } - } - - // ★ 写入需要新增的项 - if (toInsert.Count > 0) - { - // 先取当前最大序号(用MAX函数) - int startSeq = 0; - using (var cntCmd = new System.Data.SQLite.SQLiteCommand( - "SELECT COALESCE(MAX(CAST(序号 AS INTEGER)), 0) FROM \"" + tblName + "\";", conn)) - { - object o = cntCmd.ExecuteScalar(); - if (o != null && o != DBNull.Value) startSeq = Convert.ToInt32(o); - } - string sql = "INSERT INTO \"" + tblName + "\"" + - " (序号, 元件名称, 规格, 单位, 数量, 采购系数, 报出系数," + - " 表价, 采购单价, 采购价, 报出单价, 报出价, 类型, 框Handle, 文本Handle) " + - "VALUES (@seq, @name, @spec, @unit, @shuliang, @caigou, @baochu, 0, 0, 0, 0, 0, '元件', @fh, @th);"; - for (int i = 0; i < toInsert.Count; i++) - { - // ★ 自动匹配元件名称(用户库CSV模糊匹配,匹配不上为空) - string matchedName = MatchSpecName(toInsert[i].Text) ?? ""; - if (matchedName.Length == 0) aiFailedSpecs.Add(toInsert[i].Text); - using (var insCmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - insCmd.Parameters.AddWithValue("@seq", (startSeq + i + 1).ToString()); - insCmd.Parameters.AddWithValue("@name", matchedName); - insCmd.Parameters.AddWithValue("@spec", toInsert[i].Text); - insCmd.Parameters.AddWithValue("@unit", "只"); - insCmd.Parameters.AddWithValue("@shuliang", "1"); - insCmd.Parameters.AddWithValue("@caigou", "1"); - insCmd.Parameters.AddWithValue("@baochu", "1"); - insCmd.Parameters.AddWithValue("@fh", toInsert[i].FrameHandle ?? ""); - insCmd.Parameters.AddWithValue("@th", toInsert[i].TextHandle ?? ""); - insCmd.ExecuteNonQuery(); - } - } - } - } - - // ★ 删除旧框和重复新框——合并成一次批量删除(单事务+单次刷新) - var framesToErase = new List(oldFrameHandlesToDelete); - framesToErase.AddRange(newFramesToErase); - DeleteFramesByHandles(framesToErase); - - // ★ 重新编号(删除后序号可能不连续) - RenumberTable(_currentProjectId, "\"" + tblName + "\""); - - _yuanjianCache.Clear(); - _xianghaoCache.Clear(); - - // 直接在数据库层面重算(不经过内存回写) - try { RecalcAllFromDatabase(_currentProjectId); } catch { } - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - - // 保存 - try - { - if (this.advancedDataGridView5 != null) this.advancedDataGridView5.EndEdit(); - if (_yuanjianTable != null) - { - SaveTableToDatabase(_yuanjianTable, _currentProjectId, - "\"" + _yuanjianTable.TableName + "\"", null, null, true); - _yuanjianTable.AcceptChanges(); - } - } - catch { } - SaveCurrentDwg(); - - if (deletedCount > 0) - { - Log("[PaYuanjianInsert] 删除了 " + deletedCount + " 条重复元件(匹配框:" + oldFrameHandlesToDelete.Count + ")"); - } - - // ★ DeepSeek AI 兜底:本地未匹配到名称的规格,异步提交 AI 识别并回填 - if (aiFailedSpecs.Count > 0) - { - Log("[PaYuanjianInsert] " + aiFailedSpecs.Count + " 条本地未匹配,提交AI识别"); - AiFillMissingNames(aiFailedSpecs, tblName); - } - } - catch (Exception ex) - { - MessageBox.Show(this, "扒元件失败:\n" + ex.Message, - "扒元件", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _isReloading = false; - } - } - - /// 查询图号是否已存在(避免重复插入)。 - private bool TuhaoExists(string projectId, string tuhao) - { - return !string.IsNullOrEmpty(GetTuhaoFrameHandle(projectId, tuhao)); - } - - /// - /// ★ 按"同一个文本实体"判断重复:查该文本实体Handle是否已入库。 - /// 命中返回旧框Handle(真重复);未命中返回 null(不同位置的相同内容文本,正常插入)。 - /// - private string GetTuhaoFrameHandleByTextHandle(string projectId, string tuhao, string textHandle) - { - // 旧数据没有文本Handle → 按旧逻辑(文本内容)判断,保持旧行为 - if (string.IsNullOrWhiteSpace(textHandle)) return GetTuhaoFrameHandle(projectId, tuhao); - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return null; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - // ★ 先确保旧图号表有"文本Handle"列,避免查询报错 - EnsureColumns(conn, TuhaoTableName, new[] { "文本Handle" }); - // ★ 双条件:同一文本实体(Handle精确匹配) 或 旧数据行(无文本Handle,按内容兜底) - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM " + TuhaoTableName + - " WHERE 文本Handle=@th OR (图号=@t AND (文本Handle IS NULL OR 文本Handle='')) LIMIT 1;", conn)) - { - cmd.Parameters.AddWithValue("@th", textHandle); - cmd.Parameters.AddWithValue("@t", tuhao); - using (var rdr = cmd.ExecuteReader()) - { - if (rdr.Read()) - { - object v = rdr["框Handle"]; - if (v != null && v != DBNull.Value) - { - string s = v.ToString(); - if (!string.IsNullOrWhiteSpace(s)) return s; - } - } - } - } - } - } - catch { } - return null; - } - - /// 查询指定图号的框Handle(不存在返回null)。 - private string GetTuhaoFrameHandle(string projectId, string tuhao) - { - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return null; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM " + TuhaoTableName + " WHERE 图号=@t LIMIT 1;", conn)) - { - cmd.Parameters.AddWithValue("@t", tuhao); - using (var rdr = cmd.ExecuteReader()) - { - if (rdr.Read()) - { - object v = rdr["框Handle"]; - if (v != null && v != DBNull.Value) - { - string s = v.ToString(); - if (!string.IsNullOrWhiteSpace(s)) return s; - } - } - } - } - } - } - catch { } - return null; - } - - /// 查询箱号是否已存在(避免重复插入)。 - private bool XianghaoExists(string projectId, string tuhao, string xianghao) - { - return !string.IsNullOrEmpty(GetXianghaoFrameHandle(projectId, tuhao, xianghao)); - } - - /// - /// ★ 按"同一个文本实体"判断重复:查该文本实体Handle是否已入库。 - /// 命中返回旧框Handle(真重复);未命中返回 null(不同位置的相同内容文本,正常插入)。 - /// - private string GetXianghaoFrameHandleByTextHandle(string projectId, string tuhao, string xianghao, string textHandle) - { - // 旧数据没有文本Handle → 按旧逻辑(文本内容)判断,保持旧行为 - if (string.IsNullOrWhiteSpace(textHandle)) return GetXianghaoFrameHandle(projectId, tuhao, xianghao); - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return null; - string tableName = GetQuoteTableName(projectId, tuhao); - if (string.IsNullOrEmpty(tableName)) return null; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - // ★ 先确保旧箱号表有"文本Handle"列,避免查询报错 - EnsureColumns(conn, "\"" + tableName + "\"", new[] { "文本Handle" }); - // ★ 双条件:同一文本实体(Handle精确匹配) 或 旧数据行(无文本Handle,按内容兜底) - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + tableName + "\"" + - " WHERE 文本Handle=@th OR (箱号=@x AND (文本Handle IS NULL OR 文本Handle='')) LIMIT 1;", conn)) - { - cmd.Parameters.AddWithValue("@th", textHandle); - cmd.Parameters.AddWithValue("@x", xianghao); - using (var rdr = cmd.ExecuteReader()) - { - if (rdr.Read()) - { - object v = rdr["框Handle"]; - if (v != null && v != DBNull.Value) - { - string s = v.ToString(); - if (!string.IsNullOrWhiteSpace(s)) return s; - } - } - } - } - } - } - catch { } - return null; - } - - /// 查询指定箱号的框Handle(不存在返回null)。 - private string GetXianghaoFrameHandle(string projectId, string tuhao, string xianghao) - { - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return null; - string tableName = GetQuoteTableName(projectId, tuhao); - if (string.IsNullOrEmpty(tableName)) return null; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + tableName + "\" WHERE 箱号=@x LIMIT 1;", conn)) - { - cmd.Parameters.AddWithValue("@x", xianghao); - using (var rdr = cmd.ExecuteReader()) - { - if (rdr.Read()) - { - object v = rdr["框Handle"]; - if (v != null && v != DBNull.Value) - { - string s = v.ToString(); - if (!string.IsNullOrWhiteSpace(s)) return s; - } - } - } - } - } - } - catch { } - return null; - } - - /// 查询指定元件规格的所有框Handle(可能有多个重复行,返回List)。 - private List GetYuanjianFrameHandles(string projectId, string tuhao, string xianghao, string spec) - { - var list = new List(); - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return list; - string tableName = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - if (string.IsNullOrEmpty(tableName)) return list; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + tableName + "\" WHERE 规格=@s;", conn)) - { - cmd.Parameters.AddWithValue("@s", spec); - using (var rdr = cmd.ExecuteReader()) - { - while (rdr.Read()) - { - object v = rdr["框Handle"]; - if (v != null && v != DBNull.Value) - { - string s = v.ToString(); - if (!string.IsNullOrWhiteSpace(s)) list.Add(s); - } - } - } - } - } - } - catch { } - return list; - } - - /// - /// ★ 按"同一个文本实体"判断重复:查该文本实体Handle在元件表中是否已入库。 - /// 命中返回旧框Handle列表(真重复);未命中返回空列表(不同位置的相同内容文本,正常插入)。 - /// - private List GetYuanjianFrameHandlesByTextHandle(string projectId, string tuhao, string xianghao, string spec, string textHandle) - { - var list = new List(); - // 旧数据没有文本Handle → 按旧逻辑(文本内容)判断,保持旧行为 - if (string.IsNullOrWhiteSpace(textHandle)) return GetYuanjianFrameHandles(projectId, tuhao, xianghao, spec); - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return list; - string tableName = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - if (string.IsNullOrEmpty(tableName)) return list; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - // ★ 先确保旧元件表有"文本Handle"列,避免查询报错 - EnsureColumns(conn, "\"" + tableName + "\"", new[] { "文本Handle" }); - // ★ 双条件:同一文本实体(Handle精确匹配) 或 旧数据行(无文本Handle,按规格兜底) - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + tableName + "\"" + - " WHERE 文本Handle=@th OR (规格=@s AND (文本Handle IS NULL OR 文本Handle=''));", conn)) - { - cmd.Parameters.AddWithValue("@th", textHandle); - cmd.Parameters.AddWithValue("@s", spec); - using (var rdr = cmd.ExecuteReader()) - { - while (rdr.Read()) - { - object v = rdr["框Handle"]; - if (v != null && v != DBNull.Value) - { - string s = v.ToString(); - if (!string.IsNullOrWhiteSpace(s)) list.Add(s); - } - } - } - } - } - } - catch { } - return list; - } - - // ============================================================ - // 扒元件自动匹配元件名称(用户库CSV模糊匹配) - // · 扫描插件上级目录/自身目录下最新的 用户库_*.csv(GBK编码) - // · 匹配策略:L1归一化相等 → L2包含(60%长度) → L3编辑距离≥0.70 - // · 硬保护:模糊匹配时数字序列必须完全一致(63A 不会配到 100A) - // ============================================================ - - /// 用户库条目:规格 → 元件名称 - private class SpecNameEntry - { - public string Name; - public string NormSpec; // 归一化后的规格 - public string[] Numbers; // 规格中的数字序列(模糊匹配保护用) - public string Skeleton; // 字母骨架(去数字/分隔符/尾部单位,如 DZ47-4P/C80A → DZPC) - } - - private static List _specNameLib = null; - private static string _specLibCsvPath = null; - private static DateTime _specLibCsvTime = DateTime.MinValue; - - /// - /// 确保用户库CSV已加载(取最新修改时间的 用户库_*.csv, - /// 文件时间戳变化时自动重新加载;文件被 Excel 占用时用共享读)。 - /// - private static void EnsureUserLibCsvLoaded() - { - try - { - // 候选目录:上级目录(成套报价软件根目录) + 插件目录自身 - var dirs = new List(); - try - { - var parent = Path.GetDirectoryName(_baseDir); - if (!string.IsNullOrEmpty(parent) && Directory.Exists(parent)) dirs.Add(parent); - } - catch { } - dirs.Add(_baseDir); - - string best = null; - DateTime bestTime = DateTime.MinValue; - foreach (string d in dirs) - { - try - { - string[] files = Directory.GetFiles(d, "用户库*.csv"); - foreach (string f in files) - { - DateTime t = File.GetLastWriteTime(f); - if (best == null || t > bestTime) { best = f; bestTime = t; } - } - } - catch { } - } - if (best == null) return; // 没找到CSV,保持空库 - - // 时间戳没变且已加载 → 不重复加载 - if (_specNameLib != null && - string.Equals(best, _specLibCsvPath, StringComparison.OrdinalIgnoreCase) && - bestTime == _specLibCsvTime) return; - - var lib = new List(); - var prefixRules = new List(); - // ★ 共享读:文件被 Excel 打开也能读 - using (var fs = new FileStream(best, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) - using (var sr = new StreamReader(fs, DetectCsvEncoding(fs))) - { - string line; - bool first = true; - while ((line = sr.ReadLine()) != null) - { - if (string.IsNullOrWhiteSpace(line)) continue; - string[] cols = SplitCsvLine(line); - if (cols.Length < 2) continue; - string name = cols[0].Trim(); - string spec = cols[1].Trim(); - if (first) - { - first = false; - // 跳过表头 - if (name == "元件名称") continue; - } - if (name.Length == 0 || spec.Length == 0) continue; - - // ★ "元件类型"列 = "前缀" 的行是型号前缀规则(不是库条目) - string elemType = cols.Length >= 10 ? cols[9].Trim() : ""; - if (elemType == "前缀") - { - string pfx = spec.ToUpperInvariant(); - if (pfx.Length >= 2) prefixRules.Add(new[] { pfx, name }); - continue; - } - - string normSpec = NormalizeSpec(spec); - lib.Add(new SpecNameEntry - { - Name = name, - NormSpec = normSpec, - // ★ 必须用原始 spec 提取数字(保留空格/符号作数字边界); - // 用 normSpec 会导致 3300 800 粘连成 3300800,数字序列错位 - Numbers = ExtractNumbers(spec), - Skeleton = ExtractSkeleton(spec) - }); - } - } - _specNameLib = lib; - _prefixRules = prefixRules; - _specLibCsvPath = best; - _specLibCsvTime = bestTime; - WriteDebugLog("[用户库匹配] 加载CSV: " + best + " 条数=" + lib.Count + - " 前缀规则=" + prefixRules.Count); - } - catch (Exception ex) { WriteDebugLog("[用户库匹配] 加载CSV异常: " + ex.Message); } - } - - /// 检测CSV编码:有UTF-8 BOM用UTF8,否则按GBK(主程序导出编码)。 - private static System.Text.Encoding DetectCsvEncoding(FileStream fs) - { - try - { - long pos = fs.Position; - int b1 = fs.ReadByte(); - int b2 = fs.ReadByte(); - int b3 = fs.ReadByte(); - fs.Position = pos; - if (b1 == 0xEF && b2 == 0xBB && b3 == 0xBF) return System.Text.Encoding.UTF8; - } - catch { } - return System.Text.Encoding.GetEncoding("GBK"); - } - - /// 按CSV规则拆分一行(支持双引号包裹和转义"")。 - private static string[] SplitCsvLine(string line) - { - var parts = new List(); - var sb = new System.Text.StringBuilder(); - bool inQuotes = false; - for (int i = 0; i < line.Length; i++) - { - char c = line[i]; - if (c == '"') - { - if (inQuotes && i + 1 < line.Length && line[i + 1] == '"') { sb.Append('"'); i++; } - else inQuotes = !inQuotes; - } - else if (c == ',' && !inQuotes) - { - parts.Add(sb.ToString()); - sb.Length = 0; - } - else sb.Append(c); - } - parts.Add(sb.ToString()); - return parts.ToArray(); - } - - /// 规格归一化:全角→半角、统一大写、去空白和分隔符号(保留字母/数字/中文)。 - private static string NormalizeSpec(string s) - { - if (string.IsNullOrEmpty(s)) return ""; - var sb = new System.Text.StringBuilder(s.Length); - foreach (char c0 in s) - { - char c = c0; - // 全角→半角 - if (c >= 0xFF01 && c <= 0xFF5E) c = (char)(c - 0xFEE0); - else if (c == 0x3000) c = ' '; - if (c == ' ' || c == '\t') continue; - if (IsSpecSeparator(c)) continue; - sb.Append(char.ToUpperInvariant(c)); - } - return sb.ToString(); - } - - /// 规格中的分隔符号(归一化时删除;数字提取时作为数字段边界)。 - private static bool IsSpecSeparator(char c) - { - return c == '-' || c == '/' || c == '*' || c == '×' || c == '·' || c == '.' || - c == '、' || c == ',' || c == ',' || c == '(' || c == ')' || c == '(' || - c == ')' || c == '#' || c == '+' || c == '_' || c == ':' || c == ':' || - c == '~' || c == '~'; - } - - /// - /// 轻量归一化(保留分隔符和空格):全角→半角、统一大写。 - /// ★ 用于数字序列提取:分隔符和空格是数字段的天然边界, - /// 先删分隔符会导致 HYM1-63/3300 的 63 和 3300 粘连成 633300; - /// 删空格会导致 3300 800 粘连成 3300800(与 3300,800 数字序列不一致)。 - /// - private static string NormalizeKeepSeparators(string s) - { - if (string.IsNullOrEmpty(s)) return ""; - var sb = new System.Text.StringBuilder(s.Length); - foreach (char c0 in s) - { - char c = c0; - if (c >= 0xFF01 && c <= 0xFF5E) c = (char)(c - 0xFEE0); - else if (c == 0x3000) c = ' '; - if (c == '\t') c = ' '; // 制表符当空格 - sb.Append(char.ToUpperInvariant(c)); - } - return sb.ToString(); - } - - /// - /// 提取规格中的所有数字序列(在保留分隔符的版本上提取, - /// 如 HYM1-63/3300 63A → ["1","63","3300","63"])。 - /// - private static string[] ExtractNumbers(string spec) - { - var list = new List(); - if (string.IsNullOrEmpty(spec)) return list.ToArray(); - string light = NormalizeKeepSeparators(spec); - var sb = new System.Text.StringBuilder(); - foreach (char c in light) - { - if (c >= '0' && c <= '9') sb.Append(c); - else if (sb.Length > 0) { list.Add(sb.ToString()); sb.Length = 0; } - } - if (sb.Length > 0) list.Add(sb.ToString()); - return list.ToArray(); - } - - /// 两个数字序列是否完全一致。 - private static bool NumbersEqual(string[] a, string[] b) - { - if (a == null || b == null) return false; - if (a.Length != b.Length) return false; - for (int i = 0; i < a.Length; i++) - if (a[i] != b[i]) return false; - return true; - } - - /// - /// 数字序列兼容(子序列检查):短方的数字按顺序都能在长方中找到即通过。 - /// ★ 用于 L2 包含关系:一方文本是另一方的一部分,数字自然也可能少 - /// (如图纸只写 HD13BX-1500/31,库里是 HD13BX-1500/31 1500A)。 - /// ★ 依然防误配:63A vs 100A 时 63 不在对方序列对应位置,拒绝。 - /// - private static bool NumbersCompatible(string[] a, string[] b) - { - if (a == null || b == null) return false; - string[] shorter = a.Length <= b.Length ? a : b; - string[] longer = a.Length <= b.Length ? b : a; - if (longer.Length == 0) return shorter.Length == 0; - int i = 0; - foreach (string n in longer) - { - if (i < shorter.Length && n == shorter[i]) i++; - } - return i == shorter.Length; - } - - /// - /// 数字序列严格相等 + 两种容错(L3 模糊匹配用): - /// 1.粘连拆分:图纸连写导致数字粘连(如 0.66+1500 提取出 661500),拆成两段后对上即通过; - /// 2.壳架容错:图纸把额定电流写进型号段(如 HYW1-2500/3P 2500A,2500出现两次), - /// 库里型号段是壳架等级(HYW1-3200),删掉图纸型号段那个数字后能对上即通过。 - /// ★ 仅当该数字在图纸中出现≥2次才允许删,220V/380V 这类无重复差异依然拒绝。 - /// - private static bool NumbersEqualEx(string[] a, string[] b) - { - if (a == null || b == null) return false; - if (NumbersEqual(a, b)) return true; - // 容错1:粘连拆分 - if (TrySplitAndCompatible(a, b)) return true; - if (TrySplitAndCompatible(b, a)) return true; - // 容错2:壳架(删图纸中重复出现的电流数字之一) - if (TryDropFrameCurrent(a, b)) return true; - if (TryDropFrameCurrent(b, a)) return true; - return false; - } - - /// - /// 壳架容错:seq 中存在出现≥2次的数字 X,删掉其中一次后作为子序列能对上 other。 - /// 典型:图纸 HYW1-2500/3P 2500A(2500×2) vs 库 HYW1-3200/3P 2500A(3200×1,2500×1)。 - /// - private static bool TryDropFrameCurrent(string[] seq, string[] other) - { - for (int i = 0; i < seq.Length; i++) - { - string s = seq[i]; - if (s == null || s.Length < 2) continue; - // 该数字必须在 seq 中出现≥2次(型号段+电流段重复) - int cnt = 0; - foreach (string n in seq) if (n == s) cnt++; - if (cnt < 2) continue; - // 删掉第 i 个,其余保持顺序 - var list = new List(seq.Length - 1); - for (int k = 0; k < seq.Length; k++) - if (k != i) list.Add(seq[k]); - if (NumbersCompatible(list.ToArray(), other)) return true; - } - return false; - } - - /// 把 seq 中某个数字串拆成两段,拆分后作为子序列能对上 other 即返回 true。 - private static bool TrySplitAndCompatible(string[] seq, string[] other) - { - for (int i = 0; i < seq.Length; i++) - { - string s = seq[i]; - if (s == null || s.Length < 2) continue; - for (int cut = 1; cut < s.Length; cut++) - { - var list = new List(seq.Length + 1); - for (int k = 0; k < seq.Length; k++) - { - if (k == i) - { - list.Add(s.Substring(0, cut)); - list.Add(s.Substring(cut)); - } - else list.Add(seq[k]); - } - if (NumbersCompatible(list.ToArray(), other)) return true; - } - } - return false; - } - - /// - /// 提取字母骨架:去数字、去分隔符、去尾部单位词(A/V/kA 等)。 - /// ★ 用于图纸省略壳架等级的场景:DZ47-4P/C80A 与 DZ47-100 4P C80 - /// 骨架同为 DZPC,配合数字子序列保护可安全匹配。 - /// - private static string ExtractSkeleton(string spec) - { - if (string.IsNullOrEmpty(spec)) return ""; - string light = NormalizeKeepSeparators(spec); - var sb = new System.Text.StringBuilder(); - for (int i = 0; i < light.Length; i++) - { - char c = light[i]; - if (c >= 'A' && c <= 'Z') - { - // 单位词必须紧跟在数字后面才有效(如 80A、450V); - // 6L2-V 的 V 前面是分隔符,属于型号的一部分,不能截断 - bool prevIsDigit = i > 0 && light[i - 1] >= '0' && light[i - 1] <= '9'; - if (prevIsDigit && IsTailUnit(light.Substring(i))) break; - sb.Append(c); - } - // 数字、分隔符、中文等其他字符全部跳过 - } - return sb.ToString(); - } - - /// 判断剩余部分是否为纯尾部单位词(如 "A"、"80A" 里的 A、"0~450V" 里的 V)。 - private static bool IsTailUnit(string rest) - { - if (string.IsNullOrEmpty(rest)) return false; - string r = rest.Trim(); - if (r.Length > 2) return false; // 单位最多2字符(HZ/KA/KW/VA) - return r == "A" || r == "V" || r == "W" || r == "VA" || r == "HZ" || r == "KA" || r == "KW"; - } - - /// Levenshtein 编辑距离(滚动数组实现)。 - private static int LevenshteinDistance(string a, string b) - { - if (string.IsNullOrEmpty(a)) return string.IsNullOrEmpty(b) ? 0 : b.Length; - if (string.IsNullOrEmpty(b)) return a.Length; - int n = a.Length, m = b.Length; - int[] prev = new int[m + 1]; - int[] cur = new int[m + 1]; - for (int j = 0; j <= m; j++) prev[j] = j; - for (int i = 1; i <= n; i++) - { - cur[0] = i; - for (int j = 1; j <= m; j++) - { - int cost = (a[i - 1] == b[j - 1]) ? 0 : 1; - int v1 = prev[j] + 1; - int v2 = cur[j - 1] + 1; - int v3 = prev[j - 1] + cost; - cur[j] = Math.Min(v1, Math.Min(v2, v3)); - } - int[] tmp = prev; prev = cur; cur = tmp; - } - return prev[m]; - } - - /// - /// 规格匹配元件名称(模糊): - /// L1 归一化后完全相等 → 直接命中; - /// L2 包含关系(短方长度≥长方60%,数字序列一致); - /// L3 编辑距离相似度≥0.70(数字序列必须完全一致,唯一最高分才命中)。 - /// 都不中返回 null(不硬猜)。 - /// - /// - /// 粘连清洗:扒图可能把相邻文本粘连(如 "0mAVigiC65N-...")。 - /// 若文本开头是"数字+单位(mA/A/V/W)"且后面紧跟大写字母开头的型号, - /// 从型号处截取;否则原样返回。 - /// - private static string CleanLeadingNoise(string spec) - { - if (string.IsNullOrEmpty(spec)) return spec; - string s = spec.Trim(); - - // ★ 先剥"数量×"前缀:如 "3xLMZ1-0.5" → "LMZ1-0.5"、"2×AD16" → "AD16" - // (图纸常在型号前写元件数量,3x=3只) - if (s.Length > 2) - { - char c0 = s[0]; - if (c0 >= '0' && c0 <= '9') - { - int i = 0; - while (i < s.Length && s[i] >= '0' && s[i] <= '9') i++; - if (i < s.Length && (s[i] == 'x' || s[i] == 'X' || s[i] == '×' || s[i] == '*')) - { - int after = i + 1; - if (after < s.Length && s[after] >= 'A' && s[after] <= 'Z') - return s.Substring(after); - } - } - } - - // 找开头最长的"数字(可含小数点)+单位"模式 - int j = 0; - while (j < s.Length && ((s[j] >= '0' && s[j] <= '9') || s[j] == '.')) j++; - if (j == 0 || j >= s.Length) return spec; // 开头不是数字 - // 单位段(1~3个字母) - int u = j; - while (u < s.Length && u - j <= 3 && s[u] >= 'A' && s[u] <= 'z') u++; - if (u == j || u >= s.Length) return spec; // 没有单位或后面没内容 - string unit = s.Substring(j, u - j).ToUpperInvariant(); - if (unit != "MA" && unit != "A" && unit != "V" && unit != "W" && unit != "KW" && unit != "HZ") return spec; - // 单位后必须紧跟大写字母(型号开头) - char next = s[u]; - if (next < 'A' || next > 'Z') return spec; - return s.Substring(u); // 从型号处截取 - } - - // ★ 匹配结果缓存:同一规格文本(一批框选里重复文本很常见)只完整跑一次 L0-L5。 - // L3 会按库逐条算编辑距离(库大时是 CPU 热点),缓存能直接砍掉重复计算。 - private static readonly System.Collections.Generic.Dictionary _specMatchCache = - new System.Collections.Generic.Dictionary(System.StringComparer.Ordinal); - private static readonly object _specMatchCacheLock = new object(); - - /// 规格匹配元件名称(带结果缓存):相同规格文本第二次起直接返回缓存结果。 - private static string MatchSpecName(string spec) - { - if (string.IsNullOrWhiteSpace(spec)) return null; - string cached; - lock (_specMatchCacheLock) - { - if (_specMatchCache.TryGetValue(spec, out cached)) return cached; - } - string result = MatchSpecNameCore(spec); - lock (_specMatchCacheLock) - { - // 上限保护:超过2万条清空重来(规格文本总量有限,防内存无限增长) - if (_specMatchCache.Count > 20000) _specMatchCache.Clear(); - _specMatchCache[spec] = result; - } - return result; - } - - private static string MatchSpecNameCore(string spec) - { - if (string.IsNullOrWhiteSpace(spec)) return null; - - // ★ 粘连清洗:扒图可能把相邻文本粘连(如 "0mAVigiC65N-...")。 - // 若文本前部含"数字+单位(mA/A/V)"后跟已知型号,从型号处截取 - spec = CleanLeadingNoise(spec); - - EnsureUserLibCsvLoaded(); - if (_specNameLib == null || _specNameLib.Count == 0) return null; - - string norm = NormalizeSpec(spec); - if (norm.Length == 0) return null; - string[] nums = ExtractNumbers(spec); - - string result = null; - string via = "none"; - - // L0: 型号前缀规则(本地权威,最优先,覆盖国标型号命名体系) - string ruleName = MatchByPrefixRule(spec); - if (ruleName != null) - { - WriteDebugLog("[用户库匹配] 「" + spec + "」 → " + ruleName + " via L0规则"); - return ruleName; - } - - // L0.5: JB/T 2930 国标类组代号(官方定义:前2位字母=品类代号) - string gbName = MatchByGbCode(spec); - if (gbName != null) - { - WriteDebugLog("[用户库匹配] 「" + spec + "」 → " + gbName + " via L0.5国标"); - return gbName; - } - - // L1: 归一化后完全相等 - foreach (var e in _specNameLib) - { - if (e.NormSpec == norm) { result = e.Name; via = "L1相等"; break; } - } - - // L2: 包含关系(如图纸只写型号主体,库里有完整版) - if (result == null) - { - foreach (var e in _specNameLib) - { - if (e.NormSpec.Length == 0) continue; - bool contains = e.NormSpec.Contains(norm) || norm.Contains(e.NormSpec); - if (!contains) continue; - int shortLen = Math.Min(e.NormSpec.Length, norm.Length); - int longLen = Math.Max(e.NormSpec.Length, norm.Length); - if (longLen == 0 || (double)shortLen / longLen < 0.6) continue; - if (!NumbersCompatible(nums, e.Numbers)) continue; // ★ 数字子序列兼容(允许少,不允许错) - result = e.Name; via = "L2包含"; break; - } - } - - // L3: 编辑距离模糊匹配(字母/符号容错,数字绝对不放过) - if (result == null) - { - string bestName = null; - double bestScore = 0.0; - int bestCount = 0; - foreach (var e in _specNameLib) - { - if (e.NormSpec.Length == 0) continue; - if (!NumbersEqualEx(nums, e.Numbers)) continue; // ★ 数字一致(含粘连拆分容错) - // ★ 长度差剪枝:编辑距离 ≥ 长度差,长度差已超过 0.30×maxLen 时 - // score 必然 < 0.70,直接跳过(编辑距离是 O(m×n),库里条目多时全算是卡顿热点) - int maxLen = Math.Max(norm.Length, e.NormSpec.Length); - if (Math.Abs(norm.Length - e.NormSpec.Length) * 10 > maxLen * 3) continue; - int dist = LevenshteinDistance(norm, e.NormSpec); - double score = 1.0 - (double)dist / maxLen; - if (score >= 0.70) - { - if (score > bestScore + 0.0001) { bestScore = score; bestName = e.Name; bestCount = 1; } - else if (Math.Abs(score - bestScore) <= 0.0001 && bestName != e.Name) bestCount++; - } - } - if (bestCount == 1 && bestName != null) { result = bestName; via = "L3模糊"; } - } - - // L4: 字母骨架匹配(图纸省略壳架等级的场景) - // DZ47-4P/C80A 与 DZ47-100 4P C80:骨架同为 DZPC, - // 且图纸数字 [47,4,80] 是库数字 [47,100,4,80] 的子序列 → 命中 - if (result == null) - { - string skel = ExtractSkeleton(spec); - if (skel.Length >= 3) - { - string bestName = null; - int bestLen = int.MaxValue; - foreach (var e in _specNameLib) - { - if (e.Skeleton == null || e.Skeleton.Length < 3) continue; - if (e.Skeleton != skel) continue; - if (!NumbersCompatible(nums, e.Numbers)) continue; // ★ 数字子序列保护 - // 多条同骨架时取数字数量最接近的 - int diff = Math.Abs(nums.Length - e.Numbers.Length); - if (diff < bestLen) { bestLen = diff; bestName = e.Name; } - } - if (bestName != null) { result = bestName; via = "L4骨架"; } - } - } - - // L5: 大电流启发式(最后兜底) - // 框架级特征:数字≥1600 + 3P/4P + 型号含W(万能式标记) → 万能式/智能断路器 - if (result == null) - { - string sUp = spec.Trim().ToUpperInvariant(); - bool hasBig = false; - foreach (string n in nums) - { - long v; - if (long.TryParse(n, out v) && v >= 1600 && v <= 6300) { hasBig = true; break; } - } - bool hasPole = sUp.Contains("/3P") || sUp.Contains("/4P") || sUp.Contains(" 3P") || sUp.Contains(" 4P") || - sUp.EndsWith("3P") || sUp.EndsWith("4P"); - bool hasW = sUp.IndexOf('W') >= 0; - if (hasBig && hasPole && hasW) - { - // 含 I/E(智能型标记,如 HUWI/CW1I) → 智能断路器 - bool hasSmart = sUp.IndexOf('I') >= 0 || sUp.IndexOf('E') >= 0; - result = hasSmart ? "智能断路器" : "万能式断路器"; - via = "L5大电流启发"; - } - } - - // ★ 匹配日志:输入/归一化/数字序列/结果,失败可从日志直接定位原因 - WriteDebugLog("[用户库匹配] 「" + spec + "」 norm=" + norm + - " nums=[" + string.Join(",", nums) + "] → " + - (result == null ? "(未匹配)" : result + " via " + via)); - return result; - } - - // ============================================================ - // DeepSeek AI 智能匹配(本地匹配失败后的兜底) - // · 设置窗口填 API Key,存插件目录 deepseek.json - // · 扒元件后本地未命中的规格批量提交 AI 识别元器件名称 - // · 结果缓存到 deepseek_cache.json(同规格只问一次) - // · AI 结果回填元件表"元件名称"列 - // ============================================================ - - private string DeepSeekConfigPath { get { return GetDbFullPath("deepseek.json"); } } - private string DeepSeekCachePath { get { return GetDbFullPath("deepseek_cache.json"); } } - - /// DeepSeek 设置(加载/保存 JSON) - private class DeepSeekConfig - { - public string ApiKey = ""; - public string BaseUrl = "https://api.deepseek.com"; - public string Model = "deepseek-v4-flash"; // ★ 支持联网搜索的模型 - public bool Enabled = false; - public bool WebSearch = true; // ★ 联网搜索(罕见型号也能查) - } - - private DeepSeekConfig _dsConfig; - private System.Collections.Hashtable _dsCache; - - private DeepSeekConfig LoadDsConfig() - { - if (_dsConfig != null) return _dsConfig; - var cfg = new DeepSeekConfig(); - try - { - if (File.Exists(DeepSeekConfigPath)) - { - string json = File.ReadAllText(DeepSeekConfigPath, System.Text.Encoding.UTF8); - var map = SimpleJsonParse(json); - if (map.ContainsKey("ApiKey")) cfg.ApiKey = (string)map["ApiKey"] ?? ""; - if (map.ContainsKey("BaseUrl")) cfg.BaseUrl = (string)map["BaseUrl"] ?? "https://api.deepseek.com"; - if (map.ContainsKey("Model")) cfg.Model = (string)map["Model"] ?? "deepseek-v4-flash"; - // ★ 布尔值无引号,解析出的 val 可能带换行/空格前缀,比较前必须 Trim - if (map.ContainsKey("Enabled")) cfg.Enabled = ((string)map["Enabled"] ?? "").Trim() == "true"; - if (map.ContainsKey("WebSearch")) cfg.WebSearch = ((string)map["WebSearch"] ?? "").Trim() != "false"; - // ★ 旧模型(deepseek-chat 不支持联网)自动迁移到 v4 - if (cfg.Model == "deepseek-chat" || cfg.Model == "deepseek-reasoner") cfg.Model = "deepseek-v4-flash"; - } - } - catch { } - _dsConfig = cfg; - return cfg; - } - - private void SaveDsConfig(DeepSeekConfig cfg) - { - try - { - string json = "{\n" + - " \"ApiKey\": \"" + (cfg.ApiKey ?? "").Replace("\"", "\\\"") + "\",\n" + - " \"BaseUrl\": \"" + (cfg.BaseUrl ?? "").Replace("\"", "\\\"") + "\",\n" + - " \"Model\": \"" + (cfg.Model ?? "").Replace("\"", "\\\"") + "\",\n" + - " \"Enabled\": " + (cfg.Enabled ? "true" : "false") + ",\n" + - " \"WebSearch\": " + (cfg.WebSearch ? "true" : "false") + "\n" + - "}"; - File.WriteAllText(DeepSeekConfigPath, json, System.Text.Encoding.UTF8); - _dsConfig = cfg; - } - catch (Exception ex) { Log("[DeepSeek配置] 保存失败: " + ex.Message); } - } - - /// AI 匹配缓存:规格 → 元件名称(未命中/失败也缓存,避免反复请求) - private System.Collections.Hashtable LoadDsCache() - { - if (_dsCache != null) return _dsCache; - var ht = new System.Collections.Hashtable(); - try - { - if (File.Exists(DeepSeekCachePath)) - { - string json = File.ReadAllText(DeepSeekCachePath, System.Text.Encoding.UTF8); - var map = SimpleJsonParse(json); - foreach (System.Collections.DictionaryEntry kv in map) - ht[kv.Key.ToString()] = (kv.Value ?? "").ToString(); - } - } - catch { } - _dsCache = ht; - return ht; - } - - private void SaveDsCache() - { - if (_dsCache == null) return; - try - { - var sb = new System.Text.StringBuilder("{\n"); - bool first = true; - foreach (System.Collections.DictionaryEntry kv in _dsCache) - { - if (!first) sb.Append(",\n"); - sb.Append(" \"" + kv.Key.ToString().Replace("\"", "\\\"") + "\": \"" + - kv.Value.ToString().Replace("\"", "\\\"") + "\""); - first = false; - } - sb.Append("\n}"); - File.WriteAllText(DeepSeekCachePath, sb.ToString(), System.Text.Encoding.UTF8); - } - catch (Exception ex) { Log("[DeepSeek缓存] 保存失败: " + ex.Message); } - } - - /// 极简 JSON 解析(扁平 key:value 结构,支持字符串/数字/布尔值) - private static System.Collections.Hashtable SimpleJsonParse(string json) - { - var ht = new System.Collections.Hashtable(); - if (string.IsNullOrEmpty(json)) return ht; - int depth = 0; bool inStr = false; - var key = new System.Text.StringBuilder(); - var val = new System.Text.StringBuilder(); - bool inKey = true; - for (int i = 0; i < json.Length; i++) - { - char c = json[i]; - if (inStr) - { - if (c == '\\' && i + 1 < json.Length) { val.Append(json[i + 1]); i++; continue; } - if (c == '"') { inStr = false; continue; } - (inKey ? key : val).Append(c); - continue; - } - if (c == '"') { inStr = true; continue; } - if (c == '{' || c == '[') { depth++; continue; } - if (c == '}' || c == ']') - { - // ★ 闭合括号收掉最后一个键值对(布尔值结尾无逗号) - if (depth == 1 && key.Length > 0) - { - ht[key.ToString()] = val.ToString().Trim(); - key.Length = 0; val.Length = 0; inKey = true; - } - depth--; continue; - } - if (c == ':' && depth == 1) { inKey = false; val.Length = 0; continue; } - if (c == ',' && depth == 1) - { - if (key.Length > 0) ht[key.ToString()] = val.ToString().Trim(); - key.Length = 0; val.Length = 0; inKey = true; - continue; - } - // ★ 无引号值(true/false/数字)必须累积,否则解析成空 - if (!inKey && !char.IsWhiteSpace(c)) val.Append(c); - } - if (key.Length > 0) ht[key.ToString()] = val.ToString().Trim(); - return ht; - } - - // ============================================================ - // 电器型号前缀规则(与用户库共用同一个 CSV 数据文件) - // ★ 用户库 CSV 中"元件类型"列 = "前缀" 的行即为前缀规则: - // 隔离开关,HGL,只,1,0,1,1,规则,0,前缀 - // (元件名称列=名称,规格列=型号前缀) - // ★ Excel 里直接编辑用户库即可增删规则,随库自动重载 - // ★ 规则结果与 AI 冲突时,以规则为准(根治 AI 误判) - // ============================================================ - - private static List _prefixRules = new List(); - - /// 内置最小规则集(仅当用户库无任何前缀行时兜底)。 - private static readonly string[,] s_BuiltinPrefixRules = - { - { "HGL", "隔离开关" }, { "DZ47", "小型断路器" }, { "NM1", "塑壳断路器" }, - { "CJX2", "交流接触器" }, { "RT16", "熔断器" }, { "LMZ", "电流互感器" }, - }; - - // ============================================================ - // ★ JB/T 2930 国标类组代号表(低压电器型号编制方法的官方定义) - // 国标型号前2位字母=品类代号:第1位类别+第2位组别。 - // 在前缀规则(L0)之后、CSV 库(L1)之前执行,覆盖所有国标型号。 - // ============================================================ - private static readonly System.Collections.Hashtable s_GbClassCodes = new System.Collections.Hashtable(StringComparer.OrdinalIgnoreCase) - { - // H 刀开关/隔离开关族 - { "HD", "隔离开关" }, // 单投刀开关 - { "HS", "隔离开关" }, // 双投刀开关(转换) - { "HR", "隔离开关" }, // 熔断器式刀开关 - { "HH", "隔离开关" }, // 封闭式负荷开关 - { "HK", "隔离开关" }, // 开启式负荷开关(胶盖闸) - { "HZ", "转换开关" }, // 组合开关 - { "HG", "隔离开关" }, // 熔断器式隔离器(另:HG1/HG13) - // R 熔断器族 - { "RC", "熔断器" }, // 插入式 - { "RL", "熔断器" }, // 螺旋式(RL6/RL8) - { "RM", "熔断器" }, // 密封管式 - { "RS", "快速熔断器" }, // 快速(RS0/RS3) - { "RT", "熔断器" }, // 有填料管式(RT0/RT16/RT18) - { "RX", "熔断器" }, // 限流 - { "RTO", "熔断器" }, - // D 断路器族 - { "DW", "万能式断路器" }, // 框架式(DW15/DW45) - { "DZ", "塑壳断路器" }, // 装置式/塑料外壳(DZ15/DZ20) - { "DX", "小型断路器" }, - { "DM", "塑壳断路器" }, - { "DC", "断路器" }, - // C 接触器族 - { "CJ", "交流接触器" }, // 交流(CJ20/CJX) - { "CZ", "直流接触器" }, // 直流 - { "CG", "接触器" }, // 高压 - { "CP", "接触器" }, // 中频 - { "CS", "接触器" }, // 时间 - // Q 起动器族 - { "QC", "电磁起动器" }, { "QS", "手动起动器" }, { "QX", "星三角起动器" }, - { "QJ", "自耦减压起动器" }, { "QT", "起动器" }, { "QU", "起动器" }, - // J 控制继电器族 - { "JL", "电流继电器" }, { "JR", "热过载继电器" }, { "JS", "时间继电器" }, - { "JT", "通用继电器" }, { "JW", "温度继电器" }, { "JZ", "中间继电器" }, - { "JX", "继电器" }, - // L 主令电器族 - { "LA", "按钮" }, // 按钮(LA38/LA39) - { "LK", "主令控制器" }, { "LT", "主令开关" }, { "LW", "转换开关" }, - { "LX", "行程开关" }, { "LU", "足踏开关" }, { "LS", "主令开关" }, - // Z 电阻/终端族 - { "ZB", "电阻器" }, { "ZG", "电阻器" }, { "ZC", "电阻器" }, - // B 变阻器族 - { "BL", "励磁变阻器" }, { "BP", "频敏变阻器" }, { "BQ", "起动变阻器" }, - { "BT", "变阻器" }, { "BC", "旋臂变阻器" }, - // M 电磁铁族 - { "MQ", "牵引电磁铁" }, { "MZ", "制动电磁铁" }, { "MW", "起重电磁铁" }, - // A 其他族 - { "AD", "指示灯" }, // 信号灯(AD11/AD16 习惯用) - { "AN", "按钮" }, - // P 仪用互感器(行业习惯,P 不在 JB/T2930 主表,单列) - { "LQG", "电流互感器" }, - // 变压器(控制变压器 BK 不在 JB/T2930,行业通用) - { "BK", "控制变压器" }, - }; - - /// - /// ★ 国标类组代号解析:按 JB/T 2930 定义,取型号前2位字母查类组表。 - /// 仅当:①前缀规则未命中 ②开头≥2位字母 ③类组表命中 时返回名称。 - /// 数字开头/单字母/进口品牌型号不适用(返回 null 交给后续层)。 - /// - private static string MatchByGbCode(string spec) - { - if (string.IsNullOrWhiteSpace(spec)) return null; - string s = spec.Trim(); - // 前2位必须是字母(国标类组代号为2位拼音) - if (s.Length < 3) return null; - if (!((s[0] >= 'A' && s[0] <= 'Z') || (s[0] >= 'a' && s[0] <= 'z'))) return null; - if (!((s[1] >= 'A' && s[1] <= 'Z') || (s[1] >= 'a' && s[1] <= 'z'))) return null; - // 第3位应是数字或分隔符(确认是类组代号+设计序号结构,排除品牌词) - if (s.Length > 2) - { - char c2 = s[2]; - bool ok = (c2 >= '0' && c2 <= '9') || c2 == '-' || c2 == ' ' || c2 == '/'; - if (!ok) return null; - } - string code = s.Substring(0, 2).ToUpperInvariant(); - object v = s_GbClassCodes[code]; - return v as string; - } - - /// - /// 按型号前缀规则查元器件名称。 - /// ★ 规则来自用户库 CSV"元件类型=前缀"的行(EnsureUserLibCsvLoaded 时提取), - /// 规则前缀直接与规格开头比对(支持字母+数字混合前缀,如 DZ47/CDM3/CJX2), - /// 最长前缀优先(7→2字符)。 - /// 返回 null 表示无规则。 - /// - private static string MatchByPrefixRule(string spec) - { - if (string.IsNullOrWhiteSpace(spec)) return null; - string s = spec.Trim().ToUpperInvariant(); - if (s.Length < 2) return null; - - var rules = _prefixRules; - if (rules.Count == 0) - { - // 用户库无前缀行 → 内置兜底 - for (int i = 0; i < s_BuiltinPrefixRules.GetLength(0); i++) - rules.Add(new[] { s_BuiltinPrefixRules[i, 0], s_BuiltinPrefixRules[i, 1] }); - _prefixRules = rules; - } - - for (int plen = 7; plen >= 2; plen--) - { - if (s.Length < plen) continue; - string head = s.Substring(0, plen); - foreach (var rule in rules) - { - if (rule[0].Length != plen || rule[0] != head) continue; - return rule[1]; - } - } - return null; - } - - /// 打开 DeepSeek 设置窗口(运行时创建,不改 ui.cs) - private void ShowDeepSeekSettings() - { - var cfg = LoadDsConfig(); - var form = new System.Windows.Forms.Form(); - form.Text = "DeepSeek AI 匹配设置"; - form.Size = new System.Drawing.Size(420, 260); - form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - form.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - form.MaximizeBox = false; form.MinimizeBox = false; - - var lblKey = new System.Windows.Forms.Label { Text = "API Key:", Location = new System.Drawing.Point(15, 18), AutoSize = true }; - var txtKey = new System.Windows.Forms.TextBox - { - Location = new System.Drawing.Point(80, 15), Size = new System.Drawing.Size(310, 23), - Text = cfg.ApiKey, UseSystemPasswordChar = true - }; - var chkShow = new System.Windows.Forms.CheckBox - { - Text = "显示密钥", Location = new System.Drawing.Point(80, 44), AutoSize = true - }; - chkShow.CheckedChanged += (s2, e2) => txtKey.UseSystemPasswordChar = !chkShow.Checked; - - var lblModel = new System.Windows.Forms.Label { Text = "模型:", Location = new System.Drawing.Point(15, 78), AutoSize = true }; - var cboModel = new System.Windows.Forms.ComboBox - { - Location = new System.Drawing.Point(80, 74), Size = new System.Drawing.Size(180, 23), - DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - }; - cboModel.Items.Add("deepseek-v4-flash"); - cboModel.Items.Add("deepseek-v4-pro"); - cboModel.Items.Add("deepseek-chat"); - cboModel.SelectedItem = string.IsNullOrEmpty(cfg.Model) ? "deepseek-v4-flash" : cfg.Model; - - var chkEnable = new System.Windows.Forms.CheckBox - { - Text = "启用 AI 匹配(本地匹配失败后自动提交 DeepSeek 识别)", - Location = new System.Drawing.Point(15, 108), AutoSize = true, Checked = cfg.Enabled - }; - - var lblTip = new System.Windows.Forms.Label - { - Text = "提示:AI 结果会缓存到本地,相同规格只请求一次。\nAPI Key 从 platform.deepseek.com 获取。", - Location = new System.Drawing.Point(15, 138), AutoSize = true, ForeColor = System.Drawing.Color.Gray - }; - - var btnClear = new System.Windows.Forms.Button { Text = "清空AI缓存", Location = new System.Drawing.Point(80, 178), Size = new System.Drawing.Size(100, 28) }; - btnClear.Click += (s2, e2) => - { - try { if (File.Exists(DeepSeekCachePath)) File.Delete(DeepSeekCachePath); _dsCache = null; } - catch { } - MessageBox.Show(form, "AI 缓存已清空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - }; - - var btnOk = new System.Windows.Forms.Button { Text = "保存", Location = new System.Drawing.Point(240, 178), Size = new System.Drawing.Size(75, 28) }; - var btnCancel = new System.Windows.Forms.Button { Text = "取消", Location = new System.Drawing.Point(325, 178), Size = new System.Drawing.Size(75, 28) }; - - btnOk.Click += (s2, e2) => - { - cfg.ApiKey = txtKey.Text.Trim(); - cfg.Model = cboModel.SelectedItem == null ? "deepseek-v4-flash" : cboModel.SelectedItem.ToString(); - cfg.Enabled = chkEnable.Checked && cfg.ApiKey.Length > 0; - SaveDsConfig(cfg); - form.Close(); - }; - btnCancel.Click += (s2, e2) => form.Close(); - - form.Controls.AddRange(new System.Windows.Forms.Control[] { lblKey, txtKey, chkShow, lblModel, cboModel, chkEnable, lblTip, btnClear, btnOk, btnCancel }); - form.ShowDialog(this); - } - - /// - /// 调 DeepSeek API 批量识别规格对应的元器件名称。 - /// 返回 规格→名称 的哈希表(失败的规格不在结果里)。 - /// - private System.Collections.Hashtable CallDeepSeekMatch(List specs) - { - var result = new System.Collections.Hashtable(); - var cfg = LoadDsConfig(); - if (!cfg.Enabled || string.IsNullOrWhiteSpace(cfg.ApiKey)) return result; - - // 构造提问:证据链推理法(查厂商→确认型号→按厂商定义归类) - var sb = new System.Text.StringBuilder(); - sb.Append("你是低压电器型号识别专家,精通 JB/T 2930《低压电器产品型号编制方法》。为每个规格型号返回【元器件名称】(中文标准品类词)。\n\n"); - sb.Append("【推理方法】(对每个型号按证据链三步走,不要直接猜):\n"); - sb.Append("第1步·识别厂商:从型号前缀判断是哪家厂(如 HUWI→沪工/环宇系、NM→正泰、CDM→德力西、CM→常熟、CW→常熟框架、SZRM→上海人民、XBK→湘湖/新宝凯、QAM→七仪);\n"); - sb.Append("第2步·确认系列:该厂商的此系列号是否存在、属于什么产品线(用你的产品知识回忆厂商型录:如 HUWI=沪工智能型万能式、YLEM=某厂智能框架、BM3=塑壳);\n"); - sb.Append("第3步·按厂商定义归类:厂商型录里该系列挂哪个品类就答什么,不要凭字母表面猜。\n\n"); - sb.Append("【辅助规律】(第2步无记忆时用):\n"); - sb.Append("· 国标类组:前2位字母=品类(DW万能断路器/DZ塑壳/CJ交流接触器/JR热继/LA按钮/HD-HS-HR隔离开关/RT熔断器);\n"); - sb.Append("· 结构特征:电流≥1600A+3P/4P+含W → 框架级(万能式/智能断路器);壳架≤630A+3P → 塑壳;63A以下+1P/2P → 微型;\n"); - sb.Append("· 派生代号:L/E=漏电或电子式,I=智能型,Z=直流/智能,N=可逆;\n"); - sb.Append("· 进口系列:施耐德(NSX/iC65/Vigi/LC1/LR)、ABB(S/SH)、西门子(3RT/5SL)、伊顿(IS)。\n\n"); - sb.Append("【输出格式】(严格遵守):\n"); - sb.Append("只返回纯 JSON 对象 {\"规格原文\":\"元器件名称\",...},不要任何解释、思考过程或其他文字;\n"); - sb.Append("每个规格都必须给出判断:按证据链推理,无法确认厂商和系列时按结构特征推断,实在无据可依才给空字符串;\n"); - sb.Append("名称用标准品类词:万能式断路器/智能断路器/塑壳断路器/小型断路器/漏电断路器/交流接触器/直流接触器/热过载继电器/时间继电器/中间继电器/电流互感器/电压互感器/熔断器/快速熔断器/隔离开关/负荷开关/转换开关/按钮/指示灯/行程开关/双电源/电磁起动器/自耦减压起动器/控制变压器/干式变压器/电涌保护器/电容器/电能表/软启动器/变频器等。\n"); - sb.Append("规格列表:\n"); - for (int i = 0; i < specs.Count; i++) - sb.Append((i + 1) + ". " + specs[i] + "\n"); - - try - { - // ★ 纯AI知识模式:chat/completions(不走联网搜索,快且稳) - // deepseek-v4 系列是思考模型:正式回答在 content,思考过程在 reasoning_content; - // 有时 content 空、答案藏在 reasoning_content 末尾 → 两处都提取 - string body = "{" + - "\"model\":\"" + cfg.Model + "\"," + - "\"messages\":[" + - "{\"role\":\"user\",\"content\":\"" + JsonEscape(sb.ToString()) + "\"}" + - "]," + - "\"temperature\":0.1," + - "\"max_tokens\":3000" + - "}"; - - string url = (cfg.BaseUrl ?? "https://api.deepseek.com").TrimEnd('/') + "/chat/completions"; - var req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); - req.Method = "POST"; - req.ContentType = "application/json"; - req.Headers.Add("Authorization", "Bearer " + cfg.ApiKey); - req.Timeout = 60000; // 60秒 - req.ReadWriteTimeout = 60000; - req.Proxy = null; // ★ 不走系统代理(防代理环境卡死) - byte[] data = System.Text.Encoding.UTF8.GetBytes(body); - req.ContentLength = data.Length; - Log("[DeepSeek] 发起请求: " + specs.Count + " 条规格(AI知识模式), url=" + url); - using (var rs = req.GetRequestStream()) rs.Write(data, 0, data.Length); - - string respText; - using (var resp = (System.Net.HttpWebResponse)req.GetResponse()) - using (var sr = new StreamReader(resp.GetResponseStream(), System.Text.Encoding.UTF8)) - respText = sr.ReadToEnd(); - Log("[DeepSeek] 响应长度: " + respText.Length + " 字符"); - - // 从响应提取 content(手工解析,取 choices[0].message.content) - string content = ExtractJsonContent(respText); - if (string.IsNullOrEmpty(content)) - { - Log("[DeepSeek] 响应解析失败: " + (respText.Length > 400 ? respText.Substring(0, 400) : respText)); - return result; - } - // ★ 诊断:AI原始输出(排查"返回0条"问题,只打前400字符) - Log("[DeepSeek] AI输出内容: " + (content.Length > 400 ? content.Substring(0, 400) + "..." : content)); - // content 里是 {"规格":"名称",...} - // ★ 思考模型(deepseek-v4)的 content 可能为空,答案在 reasoning_content 末尾: - // 思维链最后一般会写出最终 JSON,从 reasoning_content 里找 {...} 提取 - var map = SimpleJsonParse(content); - if (map.Count == 0) - { - // 从 reasoning_content 提取最后一个完整 JSON 对象 - int rIdx = respText.IndexOf("\"reasoning_content\":\"", System.StringComparison.Ordinal); - if (rIdx >= 0) - { - string reasoning = ExtractEscapedString(respText, rIdx + 21); - int braceStart = reasoning.LastIndexOf('{'); - if (braceStart >= 0) - { - // 从最后一个 { 找到配对的 } - int depth2 = 0; int end = -1; - for (int k = braceStart; k < reasoning.Length; k++) - { - if (reasoning[k] == '{') depth2++; - else if (reasoning[k] == '}') - { - depth2--; - if (depth2 == 0) { end = k; break; } - } - } - if (end > braceStart) - { - string jsonPart = reasoning.Substring(braceStart, end - braceStart + 1); - map = SimpleJsonParse(jsonPart); - Log("[DeepSeek] 从思维链提取到 " + map.Count + " 条结果"); - } - } - } - } - foreach (System.Collections.DictionaryEntry kv in map) - { - string key = kv.Key.ToString(); - string name = (kv.Value ?? "").ToString().Trim(); - if (name.Length == 0) continue; - - // ★ 防线:AI 结果先过本地前缀规则校验,冲突时以规则为准 - // (根治 AI 偶发误判,如把 HGL 隔离开关答成熔断器) - string rule = MatchByPrefixRule(key); - if (rule != null && rule != name) - { - Log("[DeepSeek校验] 「" + key + "」 AI答[" + name + "] 与规则冲突,已改用[" + rule + "]"); - name = rule; - } - result[key] = name; - } - Log("[DeepSeek] 识别 " + specs.Count + " 条,返回 " + result.Count + " 条结果"); - } - catch (Exception ex) - { - Log("[DeepSeek] 请求失败: " + ex.Message); - } - return result; - } - - /// - /// 从 API 响应中提取模型输出文本。 - /// 兼容两种格式: - /// · chat/completions: choices[0].message.content("content":"...") - /// · responses API: output[].content[].text("text":"...")或顶层"output_text" - /// - private static string ExtractJsonContent(string respText) - { - try - { - // 方式1:responses API 的 "output_text":"..." - int idx = respText.IndexOf("\"output_text\":\"", System.StringComparison.Ordinal); - if (idx >= 0) - { - string s = ExtractEscapedString(respText, idx + 15); - if (!string.IsNullOrEmpty(s)) return s; - } - // 方式2:responses API 的输出项文本 "text":"..."(跳过 summary/reasoning, - // 直接找最后一个大 text——输出 message 的正文通常最大) - int best = -1, bestLen = 0; - int pos = 0; - while (true) - { - int t = respText.IndexOf("\"text\":\"", pos, System.StringComparison.Ordinal); - if (t < 0) break; - // 取这个字符串的长度估算 - int len = EstimateEscapedLen(respText, t + 8); - if (len > bestLen) { bestLen = len; best = t; } - pos = t + 8; - } - if (best >= 0) - { - string s = ExtractEscapedString(respText, best + 8); - if (!string.IsNullOrEmpty(s)) return s; - } - // 方式3:chat 的 "content":"..." - idx = respText.IndexOf("\"content\":\"", System.StringComparison.Ordinal); - if (idx >= 0) - { - return ExtractEscapedString(respText, idx + 11); - } - return null; - } - catch { return null; } - } - - /// 从 start 位置读取一个 JSON 转义字符串(处理 \n \" \\ \uXXXX)。 - private static string ExtractEscapedString(string text, int start) - { - var sb = new System.Text.StringBuilder(); - int i = start; - while (i < text.Length) - { - char c = text[i]; - if (c == '\\' && i + 1 < text.Length) - { - char n = text[i + 1]; - if (n == 'n') sb.Append('\n'); - else if (n == 't') sb.Append('\t'); - else if (n == 'r') sb.Append('\r'); - else if (n == '"') sb.Append('"'); - else if (n == '\\') sb.Append('\\'); - else if (n == '/' ) sb.Append('/'); - else if (n == 'u' && i + 5 < text.Length) - { - int code = Convert.ToInt32(text.Substring(i + 2, 4), 16); - sb.Append((char)code); - i += 4; - } - else sb.Append(n); - i += 2; - continue; - } - if (c == '"') break; - sb.Append(c); - i++; - } - return sb.ToString(); - } - - /// 估算 start 位置转义字符串的长度(到未转义引号为止)。 - private static int EstimateEscapedLen(string text, int start) - { - int i = start, len = 0; - while (i < text.Length) - { - char c = text[i]; - if (c == '\\' && i + 1 < text.Length) { i += 2; len += 2; continue; } - if (c == '"') break; - i++; len++; - } - return len; - } - - private static string JsonEscape(string s) - { - if (string.IsNullOrEmpty(s)) return ""; - var sb = new System.Text.StringBuilder(); - foreach (char c in s) - { - if (c == '"') sb.Append("\\\""); - else if (c == '\\') sb.Append("\\\\"); - else if (c == '\n') sb.Append("\\n"); - else if (c == '\t') sb.Append("\\t"); - else if (c == '\r') sb.Append(""); - else sb.Append(c); - } - return sb.ToString(); - } - - /// - /// 扒元件插入后:对本地匹配失败的规格异步调用 DeepSeek 补名称, - /// 完成后回填数据库 + 刷新表格(UI 线程)。 - /// ★ 单飞+排队:上一个 AI 批次未完成时,后续规格累积到待办队列, - /// 完成后一并提交(防并发互踩/请求堆积)。 - /// - private static readonly object _aiLock = new object(); - private static bool _aiRunning = false; - private static List _aiPendingSpecs = new List(); - private static string _aiPendingTbl = null; - - private void AiFillMissingNames(List failedSpecs, string tblName) - { - if (failedSpecs == null || failedSpecs.Count == 0) return; - var cfg = LoadDsConfig(); - if (!cfg.Enabled || string.IsNullOrWhiteSpace(cfg.ApiKey)) return; - - lock (_aiLock) - { - // 并发防抖:AI 批次进行中 → 累积到待办,由运行中的批次完成后接力 - if (_aiRunning) - { - foreach (string sp in failedSpecs) - if (!_aiPendingSpecs.Contains(sp)) _aiPendingSpecs.Add(sp); - if (_aiPendingTbl == null) _aiPendingTbl = tblName; - Log("[AI队列] 批次进行中," + failedSpecs.Count + " 条已加入待办(累计 " + _aiPendingSpecs.Count + ")"); - return; - } - _aiRunning = true; - _aiPendingTbl = tblName; - } - - RunAiBatch(failedSpecs, tblName); - } - - /// 执行一个 AI 批次(完成后处理待办队列)。 - private void RunAiBatch(List specs, string tblName) - { - var bgw = new System.ComponentModel.BackgroundWorker(); - bgw.DoWork += (s, e) => - { - try - { - // 先查缓存,未缓存的才提交 AI - var cache = LoadDsCache(); - var toAsk = new List(); - var localHits = new System.Collections.Hashtable(); - lock (_aiLock) - { - foreach (string sp in specs) - { - if (cache.ContainsKey(sp)) - { - string cached = (cache[sp] ?? "").ToString(); - // ★ 规则有结果但缓存为空(AI曾未识别) → 用规则(补漏) - string rule = MatchByPrefixRule(sp); - if (rule != null && rule.Length > 0 && rule != cached) - { - Log("[缓存校验] 「" + sp + "」 缓存[" + cached + "]与规则冲突,已纠正为[" + rule + "]"); - cached = rule; - cache[sp] = rule; - } - if (cached.Length > 0) localHits[sp] = cached; - } - else if (!toAsk.Contains(sp)) toAsk.Add(sp); - } - } - - var ai = new System.Collections.Hashtable(); - if (toAsk.Count > 0) - { - ai = CallDeepSeekMatch(toAsk); - // 写缓存(包括未命中的,避免反复问) - lock (_aiLock) - { - foreach (string sp in toAsk) - cache[sp] = ai.Contains(sp) ? ai[sp].ToString() : ""; - SaveDsCache(); - } - } - - // 合并结果 - var final = new System.Collections.Hashtable(); - foreach (System.Collections.DictionaryEntry kv in localHits) final[kv.Key] = kv.Value; - foreach (System.Collections.DictionaryEntry kv in ai) final[kv.Key] = kv.Value; - e.Result = final; - } - catch (Exception ex) - { - Log("[AI回填] 后台异常: " + ex); - e.Result = new System.Collections.Hashtable(); - } - }; - bgw.RunWorkerCompleted += (s, e) => - { - // ★ 无论成败都处理:先取走待办队列并释放单飞标记 - List pending; - string pendingTbl; - lock (_aiLock) - { - pending = new List(_aiPendingSpecs); - pendingTbl = _aiPendingTbl; - _aiPendingSpecs = new List(); - _aiPendingTbl = null; - _aiRunning = false; - } - - try - { - var final = e.Result as System.Collections.Hashtable; - if (final == null || final.Count == 0) { if (pending.Count > 0) StartNextAiBatch(pending, pendingTbl); return; } - int updated = 0; - string dbPath = GetQuoteDbPath(_currentProjectId); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var tx = conn.BeginTransaction()) - { - foreach (System.Collections.DictionaryEntry kv in final) - { - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "UPDATE \"" + tblName + "\" SET 元件名称=@name WHERE 规格=@spec AND (元件名称 IS NULL OR 元件名称='');", conn)) - { - cmd.Parameters.AddWithValue("@name", kv.Value.ToString()); - cmd.Parameters.AddWithValue("@spec", kv.Key.ToString()); - updated += cmd.ExecuteNonQuery(); - } - } - tx.Commit(); - } - } - if (updated > 0) - { - Log("[AI回填] 已回填 " + updated + " 条元件名称"); - _yuanjianCache.Clear(); - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - } - - // ★ AI 识别成功的结果追加进用户库 CSV(库越用越全, - // 下次同规格本地直接命中,不再消耗 AI) - AppendAiResultsToUserLibCsv(final); - } - catch (Exception ex) { Log("[AI回填] 回填异常: " + ex.Message); } - - // ★ 接力:待办队列有货 → 继续下一个批次 - if (pending.Count > 0) StartNextAiBatch(pending, pendingTbl); - }; - bgw.RunWorkerAsync(); - } - - /// 启动下一个 AI 批次(带单飞保护)。 - private void StartNextAiBatch(List specs, string tblName) - { - lock (_aiLock) - { - if (_aiRunning) - { - foreach (string sp in specs) - if (!_aiPendingSpecs.Contains(sp)) _aiPendingSpecs.Add(sp); - return; - } - _aiRunning = true; - _aiPendingTbl = tblName; - } - Log("[AI队列] 接力下一批 " + specs.Count + " 条"); - RunAiBatch(specs, tblName); - } - - /// - /// 把 AI 识别结果(规格→名称)追加到最新用户库 CSV(GBK 编码), - /// 并同步更新内存库 _specNameLib(当前会话立即生效)。 - /// 已存在的规格跳过;每条占一行:名称,规格,只,1,0,1,1,AI识别,0,元件 - /// - private void AppendAiResultsToUserLibCsv(System.Collections.Hashtable aiResults) - { - try - { - if (aiResults == null || aiResults.Count == 0) return; - - // 找最新 CSV(与 EnsureUserLibCsvLoaded 同规则:上级目录+插件目录取最新) - string best = null; DateTime bestTime = DateTime.MinValue; - var dirs = new List(); - try - { - var parent = Path.GetDirectoryName(_baseDir); - if (!string.IsNullOrEmpty(parent) && Directory.Exists(parent)) dirs.Add(parent); - } - catch { } - dirs.Add(_baseDir); - foreach (string d in dirs) - { - try - { - foreach (string f in Directory.GetFiles(d, "用户库*.csv")) - { - DateTime t = File.GetLastWriteTime(f); - if (best == null || t > bestTime) { best = f; bestTime = t; } - } - } - catch { } - } - if (best == null) { Log("[AI入库] 未找到用户库CSV,跳过"); return; } - - // ★ 共享读写:文件可能被 Excel 打开 - var gbk = System.Text.Encoding.GetEncoding("GBK"); - var existing = new HashSet(StringComparer.OrdinalIgnoreCase); - var fs = System.IO.File.Open(best, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - using (var sr = new StreamReader(fs, gbk)) - { - string line; - while ((line = sr.ReadLine()) != null) - { - if (string.IsNullOrWhiteSpace(line)) continue; - int comma = line.IndexOf(','); - if (comma > 0) existing.Add(line.Substring(comma + 1).Trim()); - } - } - - // 组装新增行 - var newLines = new List(); - foreach (System.Collections.DictionaryEntry kv in aiResults) - { - string spec = kv.Key.ToString().Trim(); - string name = kv.Value.ToString().Trim(); - if (spec.Length == 0 || name.Length == 0) continue; - if (existing.Contains(spec)) continue; - newLines.Add(name + "," + spec + ",只,1,0,1,1,AI识别,0,元件"); - existing.Add(spec); // 防同批重复 - } - if (newLines.Count == 0) { Log("[AI入库] 全部已存在,无新增"); return; } - - // 追加写(共享读写防 Excel 锁;失败重试3次——扒图进程可能正读CSV) - bool written = false; - for (int attempt = 0; attempt < 3 && !written; attempt++) - { - try - { - using (var fs2 = new FileStream(best, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)) - using (var sw = new StreamWriter(fs2, gbk)) - { - foreach (string nl in newLines) sw.WriteLine(nl); - } - written = true; - } - catch (System.IO.IOException) - { - System.Threading.Thread.Sleep(300); // 等 CSV 读取方释放 - } - } - if (!written) Log("[AI入库] 写入失败(文件被占用),跳过本次(下次扒图会再尝试)"); - - // ★ 同步内存库:当前会话的本地匹配立即可用 - try - { - EnsureUserLibCsvLoaded(); - if (_specNameLib != null) - { - foreach (string nl in newLines) - { - string[] cols = nl.Split(','); - if (cols.Length >= 2) - _specNameLib.Add(new SpecNameEntry - { - Name = cols[0], - NormSpec = NormalizeSpec(cols[1]), - Numbers = ExtractNumbers(cols[1]), - Skeleton = ExtractSkeleton(cols[1]) - }); - } - } - } - catch { } - - Log("[AI入库] 新增 " + newLines.Count + " 条到 " + Path.GetFileName(best)); - } - catch (Exception ex) { Log("[AI入库] 失败: " + ex.Message); } - } - - /// 根据项目ID和图号获取箱号表名(查"表索引"表)。 - private string GetQuoteTableName(string projectId, string tuhao) - { - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return ""; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 表名 FROM " + IndexTableName + " WHERE 图号=@t LIMIT 1;", conn)) - { - cmd.Parameters.AddWithValue("@t", tuhao); - object o = cmd.ExecuteScalar(); - return o == null ? "" : o.ToString(); - } - } - } - catch { return ""; } - } - - private void InsertTuhao(string projectId, string tuhao, string frameHandle, string textHandle) - { - if (string.IsNullOrWhiteSpace(projectId)) return; - EnsureQuoteDbExists(projectId); - string dbPath = GetQuoteDbPath(projectId); - string sql = "INSERT INTO " + TuhaoTableName + - " (序号, 图号, 台数, 箱柜数量, 单价, 总价, 成本总价, 毛利, 毛利率, 框Handle, 文本Handle) " + - "VALUES (@seq, @th, @taishu, 0, 0, 0, 0, 0, 0, @frameHandle, @textHandle);"; - string seq = GetNextSeqNumber(TuhaoTableName, "图号", projectId); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@seq", seq); - cmd.Parameters.AddWithValue("@th", tuhao); - cmd.Parameters.AddWithValue("@taishu", "1"); - cmd.Parameters.AddWithValue("@frameHandle", frameHandle ?? ""); - cmd.Parameters.AddWithValue("@textHandle", textHandle ?? ""); - cmd.ExecuteNonQuery(); - } - } - } - - private void DeleteTuhao(string projectId, string tuhao) - { - if (string.IsNullOrWhiteSpace(projectId)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - var tablesToDrop = new List(); - string selIdx = "SELECT 实际表名 FROM 表索引 WHERE 图号 = @th;"; - using (var sel = new System.Data.SQLite.SQLiteCommand(selIdx, conn)) - { - sel.Parameters.AddWithValue("@th", tuhao); - using (var reader = sel.ExecuteReader()) - { - while (reader.Read()) - { - string realTbl = reader.IsDBNull(0) ? "" : reader.GetString(0); - if (!string.IsNullOrWhiteSpace(realTbl)) tablesToDrop.Add(realTbl); - } - } - } - foreach (string realTbl in tablesToDrop) - { - using (var dropCmd = new System.Data.SQLite.SQLiteCommand( - "DROP TABLE IF EXISTS \"" + realTbl + "\";", conn)) - dropCmd.ExecuteNonQuery(); - } - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM " + TuhaoTableName + " WHERE 图号 = @th;", conn)) - { - cmd.Parameters.AddWithValue("@th", tuhao); - cmd.ExecuteNonQuery(); - } - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM 表索引 WHERE 图号 = @th;", conn)) - { - cmd.Parameters.AddWithValue("@th", tuhao); - cmd.ExecuteNonQuery(); - } - } - } - - private void InsertXianghao(string projectId, string tuhao, string xianghao, string frameHandle, string textHandle) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao)) return; - EnsureQuoteDbExists(projectId); - string dbPath = GetQuoteDbPath(projectId); - string tblName = GetXianghaoTableByIndex(projectId, tuhao); - if (string.IsNullOrEmpty(tblName)) - { - tblName = GetNextTableId(projectId, "xh"); - CreateXianghaoTable(projectId, tblName); - AddTableIndex(projectId, "箱号", tuhao, "", tblName); - } - // ★ 确保旧箱号表也有"箱名"/"框Handle"/"文本Handle"列 - using (var connEns = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - connEns.Open(); - EnsureColumns(connEns, "\"" + tblName + "\"", new[] { "箱名", "框Handle", "文本Handle" }); - } - string seq = GetXianghaoCount(projectId, tuhao); - string sql = "INSERT INTO \"" + tblName + "\"" + - " (序号, 箱号, 箱名, 单位, 数量," + - " 单台成本, 成本价, 单台报出, 报出价, 利润, 利润率, 毛利率, 框Handle, 文本Handle) " + - "VALUES (@seq, @xh, @xm, @unit, @shuliang, 0, 0, 0, 0, 0, 0, 0, @frameHandle, @textHandle);"; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@seq", seq); - cmd.Parameters.AddWithValue("@xh", xianghao); - cmd.Parameters.AddWithValue("@xm", ""); // 箱名默认空,由用户在表格里填写 - cmd.Parameters.AddWithValue("@unit", "台"); - cmd.Parameters.AddWithValue("@shuliang", "1"); - cmd.Parameters.AddWithValue("@frameHandle", frameHandle ?? ""); - cmd.Parameters.AddWithValue("@textHandle", textHandle ?? ""); - cmd.ExecuteNonQuery(); - } - } - } - - private void DeleteXianghao(string projectId, string tuhao, string xianghao) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - string yjTbl = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - if (!string.IsNullOrEmpty(yjTbl)) - { - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "DROP TABLE IF EXISTS \"" + yjTbl + "\";", conn)) - cmd.ExecuteNonQuery(); - } - string xhTbl = GetXianghaoTableByIndex(projectId, tuhao); - if (!string.IsNullOrEmpty(xhTbl)) - { - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM \"" + xhTbl + "\" WHERE 箱号 = @xh;", conn)) - { - cmd.Parameters.AddWithValue("@xh", xianghao); - cmd.ExecuteNonQuery(); - } - } - } - RemoveTableIndex(projectId, "元件", tuhao, xianghao); - } - - private void InsertYuanjian(string projectId, string tuhao, string xianghao, string name) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao) || string.IsNullOrWhiteSpace(xianghao)) return; - EnsureQuoteDbExists(projectId); - string dbPath = GetQuoteDbPath(projectId); - EnsureYuanjianTableExists(projectId, tuhao, xianghao); - string tblName = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - if (string.IsNullOrEmpty(tblName)) - { - System.Windows.Forms.MessageBox.Show("元件表创建失败(表索引未注册),图号=" + tuhao + " 箱号=" + xianghao); - return; - } - string seq; - using (var conn0 = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn0.Open(); - using (var c = new System.Data.SQLite.SQLiteCommand( - "SELECT COUNT(*) FROM \"" + tblName + "\";", conn0)) - { - int n = 0; - object o = c.ExecuteScalar(); - if (o != null && o != DBNull.Value) n = Convert.ToInt32(o); - seq = (n + 1).ToString(); - } - } - string sql = "INSERT INTO \"" + tblName + "\"" + - " (序号, 元件名称, 单位, 数量, 采购系数, 报出系数," + - " 表价, 采购单价, 采购价, 报出单价, 报出价, 类型) " + - "VALUES (@seq, @name, @unit, @shuliang, @caigou, @baochu, 0, 0, 0, 0, 0, '元件');"; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@seq", seq); - cmd.Parameters.AddWithValue("@name", name); - cmd.Parameters.AddWithValue("@unit", "只"); - cmd.Parameters.AddWithValue("@shuliang", "1"); - cmd.Parameters.AddWithValue("@caigou", "1"); - cmd.Parameters.AddWithValue("@baochu", "1"); - cmd.ExecuteNonQuery(); - } - } - } - - /// 扒元件专用:把文本写到【规格】列(元件名称留空),同时写入框Handle。 - private void InsertYuanjianSpec(string projectId, string tuhao, string xianghao, string spec, string frameHandle) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao) || string.IsNullOrWhiteSpace(xianghao)) return; - EnsureQuoteDbExists(projectId); - string dbPath = GetQuoteDbPath(projectId); - EnsureYuanjianTableExists(projectId, tuhao, xianghao); - string tblName = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - if (string.IsNullOrEmpty(tblName)) - { - System.Windows.Forms.MessageBox.Show("元件表创建失败(表索引未注册),图号=" + tuhao + " 箱号=" + xianghao); - return; - } - string seq; - using (var conn0 = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn0.Open(); - using (var c = new System.Data.SQLite.SQLiteCommand( - "SELECT COUNT(*) FROM \"" + tblName + "\";", conn0)) - { - int n = 0; - object o = c.ExecuteScalar(); - if (o != null && o != DBNull.Value) n = Convert.ToInt32(o); - seq = (n + 1).ToString(); - } - } - // ★ 写入"规格"列 + 框Handle - string sql = "INSERT INTO \"" + tblName + "\"" + - " (序号, 元件名称, 规格, 单位, 数量, 采购系数, 报出系数," + - " 表价, 采购单价, 采购价, 报出单价, 报出价, 类型, 框Handle) " + - "VALUES (@seq, '', @spec, @unit, @shuliang, @caigou, @baochu, 0, 0, 0, 0, 0, '元件', @frameHandle);"; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@seq", seq); - cmd.Parameters.AddWithValue("@spec", spec); - cmd.Parameters.AddWithValue("@unit", "只"); - cmd.Parameters.AddWithValue("@shuliang", "1"); - cmd.Parameters.AddWithValue("@caigou", "1"); - cmd.Parameters.AddWithValue("@baochu", "1"); - cmd.Parameters.AddWithValue("@frameHandle", frameHandle ?? ""); - cmd.ExecuteNonQuery(); - } - } - } - - private void DeleteYuanjian(string projectId, string tuhao, string xianghao, string seq) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(xianghao)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - string realTbl = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - if (string.IsNullOrEmpty(realTbl)) return; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "DELETE FROM \"" + realTbl + "\" WHERE 序号 = @seq;", conn)) - { - cmd.Parameters.AddWithValue("@seq", seq); - cmd.ExecuteNonQuery(); - } - } - } - - // ============================================================ - // 数据库回写:把内存 DataTable 的改动写回报价库 - // ============================================================ - - private void SaveTableToDatabase(DataTable table, string projectId, string tableName, - string whereClause, Dictionary whereParams, bool force = false) - { - if (table == null || string.IsNullOrWhiteSpace(projectId)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - - DataGridView dgv = null; - if (table == _tuhaoTable) dgv = this.advancedDataGridView9; - else if (table == _xianghaoTable) dgv = this.advancedDataGridView4; - else if (table == _yuanjianTable) dgv = this.advancedDataGridView5; - if (dgv != null) dgv.EndEdit(); - - if (table.Rows.Count == 0) return; - if (!force && table.GetChanges() == null) return; - - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var tx = conn.BeginTransaction()) - { - string delSql = "DELETE FROM " + tableName; - if (!string.IsNullOrWhiteSpace(whereClause)) delSql += " WHERE " + whereClause; - delSql += ";"; - using (var delCmd = new System.Data.SQLite.SQLiteCommand(delSql, conn)) - { - if (whereParams != null) - { - foreach (var kv in whereParams) delCmd.Parameters.AddWithValue(kv.Key, kv.Value); - } - delCmd.ExecuteNonQuery(); - } - if (table.Rows.Count > 0) - { - var colNames = new List(table.Columns.Count); - foreach (DataColumn c in table.Columns) colNames.Add(c.ColumnName); - var paramList = new List(colNames.Count); - foreach (string c in colNames) paramList.Add("@" + c); - string insertSql = "INSERT INTO " + tableName + " (" + - string.Join(", ", colNames.ToArray()) + ") VALUES (" + - string.Join(", ", paramList.ToArray()) + ");"; - using (var insCmd = new System.Data.SQLite.SQLiteCommand(insertSql, conn)) - { - foreach (string col in colNames) - insCmd.Parameters.Add("@" + col, System.Data.DbType.String); - try { insCmd.Prepare(); } catch { } - foreach (DataRow row in table.Rows) - { - if (row.RowState == DataRowState.Deleted) continue; - foreach (string col in colNames) - { - object v = row[col]; - insCmd.Parameters["@" + col].Value = - (v == null || v == DBNull.Value) ? "" : v.ToString(); - } - insCmd.ExecuteNonQuery(); - } - } - } - tx.Commit(); - } - table.AcceptChanges(); - } - } - - private void SaveTuhaoTableIfDirty() - { - SaveTableToDatabase(_tuhaoTable, _currentProjectId, TuhaoTableName, null, null); - } - - private void SaveXianghaoTableIfDirty() - { - if (_xianghaoTable == null || string.IsNullOrWhiteSpace(_xianghaoTable.TableName)) return; - SaveTableToDatabase(_xianghaoTable, _currentProjectId, - "\"" + _xianghaoTable.TableName + "\"", null, null); - } - - private void SaveYuanjianTableIfDirty() - { - if (_yuanjianTable == null || string.IsNullOrWhiteSpace(_yuanjianTable.TableName)) return; - SaveTableToDatabase(_yuanjianTable, _currentProjectId, - "\"" + _yuanjianTable.TableName + "\"", null, null); - } - - private void SaveAllQuoteTablesIfDirty(bool force = true) - { - if (string.IsNullOrWhiteSpace(_currentProjectId)) return; - try - { - if (this.advancedDataGridView5 != null) this.advancedDataGridView5.EndEdit(); - if (this.advancedDataGridView4 != null) this.advancedDataGridView4.EndEdit(); - if (this.advancedDataGridView9 != null) this.advancedDataGridView9.EndEdit(); - if (_yuanjianTable != null && !string.IsNullOrWhiteSpace(_yuanjianTable.TableName)) - SaveTableToDatabase(_yuanjianTable, _currentProjectId, - "\"" + _yuanjianTable.TableName + "\"", null, null, force); - if (_xianghaoTable != null && !string.IsNullOrWhiteSpace(_xianghaoTable.TableName)) - SaveTableToDatabase(_xianghaoTable, _currentProjectId, - "\"" + _xianghaoTable.TableName + "\"", null, null, force); - if (_tuhaoTable != null) - SaveTableToDatabase(_tuhaoTable, _currentProjectId, TuhaoTableName, null, null, force); - } - catch { } - } - - private void SaveAllToDatabaseSilent() - { - if (string.IsNullOrWhiteSpace(_currentProjectId)) return; - if (this.advancedDataGridView5 != null) this.advancedDataGridView5.EndEdit(); - if (this.advancedDataGridView4 != null) this.advancedDataGridView4.EndEdit(); - if (this.advancedDataGridView9 != null) this.advancedDataGridView9.EndEdit(); - try - { - if (_tuhaoTable != null) - SaveTableToDatabase(_tuhaoTable, _currentProjectId, TuhaoTableName, null, null, true); - foreach (var kv in _xianghaoCache) - if (kv.Value != null && !string.IsNullOrWhiteSpace(kv.Value.TableName)) - SaveTableToDatabase(kv.Value, _currentProjectId, - "\"" + kv.Value.TableName + "\"", null, null, true); - foreach (var kv in _yuanjianCache) - if (kv.Value != null && !string.IsNullOrWhiteSpace(kv.Value.TableName)) - SaveTableToDatabase(kv.Value, _currentProjectId, - "\"" + kv.Value.TableName + "\"", null, null, true); - RecalcAllFromDatabase(_currentProjectId); - ReloadProjectsFromDatabase(); - } - catch { } - } - - // ============================================================ - // 联动刷新:项目 → 图号 → 箱号 → 元件 - // ============================================================ - - private void ReloadProjectsFromDatabase() - { - string dbPath = GetDbFullPath(ProjectsDbPath); - if (!File.Exists(dbPath)) return; - - var indexTable = new DataTable(); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "SELECT 项目编号, 箱柜台数, 成本总价, 报出总价, 利润, 利润率 FROM " + - ProjectsTableName + " ORDER BY rowid;"; - using (var adapter = new System.Data.SQLite.SQLiteDataAdapter(sql, conn)) - adapter.Fill(indexTable); - } - - var table = new DataTable(); - table.Columns.Add("项目编号", typeof(string)); - table.Columns.Add("项目名称", typeof(string)); - table.Columns.Add("客户名称", typeof(string)); - table.Columns.Add("客户地址", typeof(string)); - table.Columns.Add("联系人", typeof(string)); - table.Columns.Add("联系电话", typeof(string)); - table.Columns.Add("项目日期", typeof(string)); - table.Columns.Add("箱柜台数", typeof(string)); - table.Columns.Add("成本总价", typeof(string)); - table.Columns.Add("报出总价", typeof(string)); - table.Columns.Add("利润", typeof(string)); - table.Columns.Add("利润率", typeof(string)); - table.Columns.Add("备注", typeof(string)); - - foreach (DataRow idxRow in indexTable.Rows) - { - string projectId = idxRow["项目编号"] == null ? "" : idxRow["项目编号"].ToString().Trim(); - if (string.IsNullOrEmpty(projectId)) continue; - var info = GetProjectInfoFromQuoteDb(projectId); - var row = table.NewRow(); - row["项目编号"] = projectId; - row["项目名称"] = GetInfoOrDefault(info, "项目名称"); - row["客户名称"] = GetInfoOrDefault(info, "客户名称"); - row["客户地址"] = GetInfoOrDefault(info, "客户地址"); - row["联系人"] = GetInfoOrDefault(info, "联系人"); - row["联系电话"] = GetInfoOrDefault(info, "联系电话"); - row["项目日期"] = GetInfoOrDefault(info, "项目日期"); - row["备注"] = GetInfoOrDefault(info, "备注"); - row["箱柜台数"] = idxRow["箱柜台数"] == null ? "" : idxRow["箱柜台数"].ToString(); - row["成本总价"] = idxRow["成本总价"] == null ? "" : idxRow["成本总价"].ToString(); - row["报出总价"] = idxRow["报出总价"] == null ? "" : idxRow["报出总价"].ToString(); - row["利润"] = idxRow["利润"] == null ? "" : idxRow["利润"].ToString(); - row["利润率"] = idxRow["利润率"] == null ? "" : idxRow["利润率"].ToString(); - table.Rows.Add(row); - } - - this.advancedDataGridView6.AutoGenerateColumns = false; - table = ConvertFormulaColumnsToDouble(table); - this.advancedDataGridView6.DataSource = table; - } - - private static string GetInfoOrDefault(Dictionary info, string key) - { - if (info == null) return ""; - string v; - return info.TryGetValue(key, out v) ? (v ?? "") : ""; - } - - private void ReloadTuhaoByProject(string projectId) - { - bool outerGuard = _isReloading; - _isReloading = true; - try - { - if (string.IsNullOrWhiteSpace(projectId) || !File.Exists(GetQuoteDbPath(projectId))) - { - this.advancedDataGridView9.DataSource = null; - _tuhaoTable = null; - _currentTuhao = ""; - ReloadXianghaoByTuhao("", ""); - return; - } - string dbPath = GetQuoteDbPath(projectId); - string sql = "SELECT * FROM " + TuhaoTableName + " ORDER BY CAST(序号 AS INTEGER);"; - var table = new DataTable(); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - using (var adapter = new System.Data.SQLite.SQLiteDataAdapter(cmd)) - adapter.Fill(table); - } - table = ConvertFormulaColumnsToDouble(table); - this.advancedDataGridView9.AutoGenerateColumns = false; - this.advancedDataGridView9.DataSource = table; - _tuhaoTable = table; - ApplyPriceFormat(this.advancedDataGridView9, _单台小数位文本); - - _currentTuhao = ""; - if (this.advancedDataGridView9.Rows.Count > 0) - { - SetCurrentCell(this.advancedDataGridView9, 0); - _currentTuhao = GetCellValueAsString(this.advancedDataGridView9.Rows[0], "图号"); - } - ReloadXianghaoByTuhao(_currentProjectId, _currentTuhao); - } - finally { _isReloading = outerGuard; } - } - - private void ReloadXianghaoByTuhao(string projectId, string tuhao) - { - bool outerGuard = _isReloading; - _isReloading = true; - try - { - if (this.advancedDataGridView4 != null) this.advancedDataGridView4.EndEdit(); - - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao) || - !File.Exists(GetQuoteDbPath(projectId))) - { - this.advancedDataGridView4.DataSource = null; - _xianghaoTable = null; - _currentXianghao = ""; - ReloadYuanjianByXianghao("", "", ""); - return; - } - string dbPath = GetQuoteDbPath(projectId); - string realTbl = GetXianghaoTableByIndex(projectId, tuhao); - if (string.IsNullOrEmpty(realTbl)) - { - realTbl = GetNextTableId(projectId, "xh"); - CreateXianghaoTable(projectId, realTbl); - AddTableIndex(projectId, "箱号", tuhao, "", realTbl); - } - - DataTable table; - // ★ 禁用缓存命中:每次都从数据库重新读取,确保删除/变更能及时反映到UI - if (_xianghaoCache.ContainsKey(tuhao)) _xianghaoCache.Remove(tuhao); - { - string sql = "SELECT * FROM \"" + realTbl + "\" ORDER BY CAST(序号 AS INTEGER);"; - table = new DataTable(); - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - // ★ 老库结构兼容:箱号表可能还没有"箱名"列,读取前幂等补列(表格绑定依赖该列) - EnsureColumns(conn, "\"" + realTbl + "\"", new[] { "箱名" }); - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - using (var adapter = new System.Data.SQLite.SQLiteDataAdapter(cmd)) - adapter.Fill(table); - } - table = ConvertFormulaColumnsToDouble(table); - table.TableName = realTbl; - _xianghaoCache[tuhao] = table; - } - - this.advancedDataGridView4.AutoGenerateColumns = false; - this.advancedDataGridView4.DataSource = table; - _xianghaoTable = table; - ApplyPriceFormat(this.advancedDataGridView4, _单台小数位文本); - - _currentXianghao = ""; - if (this.advancedDataGridView4.Rows.Count > 0) - { - SetCurrentCell(this.advancedDataGridView4, 0); - _currentXianghao = GetCellValueAsString(this.advancedDataGridView4.Rows[0], "箱号"); - } - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - } - finally { _isReloading = outerGuard; } - } - - private void ReloadYuanjianByXianghao(string projectId, string tuhao, string xianghao) - { - if (this.advancedDataGridView5 != null) this.advancedDataGridView5.EndEdit(); - - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao) || - string.IsNullOrWhiteSpace(xianghao) || !File.Exists(GetQuoteDbPath(projectId))) - { - this.advancedDataGridView5.DataSource = null; - _yuanjianTable = null; - return; - } - string realTbl = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - string dbPath = GetQuoteDbPath(projectId); - string cacheKey = tuhao + "\n" + xianghao; - DataTable table; - // ★ 禁用缓存命中:每次都从数据库重新读取,确保删除/变更能及时反映到UI - if (_yuanjianCache.ContainsKey(cacheKey)) _yuanjianCache.Remove(cacheKey); - { - table = new DataTable(); - if (!string.IsNullOrEmpty(realTbl)) - { - string sql = "SELECT * FROM \"" + realTbl + "\" ORDER BY CAST(序号 AS INTEGER);"; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - using (var adapter = new System.Data.SQLite.SQLiteDataAdapter(cmd)) - adapter.Fill(table); - } - table = ConvertFormulaColumnsToDouble(table); - } - table.TableName = realTbl; - _yuanjianCache[cacheKey] = table; - } - this.advancedDataGridView5.AutoGenerateColumns = false; - this.advancedDataGridView5.DataSource = table; - _yuanjianTable = table; - ApplyPriceFormat(this.advancedDataGridView5, _单台小数位文本); - } - - // ============================================================ - // 公式重算 - // ============================================================ - - private void RecalcYuanjianRow(DataGridViewRow row) - { - if (row == null) return; - decimal biaoJia = GetCellDecimal(row, "表价"); - decimal caiGouXiShu = GetCellDecimal(row, "采购系数"); - decimal baoChuXiShu = GetCellDecimal(row, "报出系数"); - decimal shuLiang = GetCellDecimal(row, "数量"); - decimal caiGouDanJia = biaoJia * caiGouXiShu; - decimal caiGouJia = caiGouDanJia * shuLiang; - decimal baoChuDanJia = caiGouDanJia * baoChuXiShu; - decimal baoChuJia = baoChuDanJia * shuLiang; - SetCell(row, "采购单价", caiGouDanJia); - SetCell(row, "采购价", caiGouJia); - SetCell(row, "报出单价", baoChuDanJia); - SetCell(row, "报出价", baoChuJia); - } - - private void RecalcXianghaoRowFromYuanjian(DataGridViewRow xianghaoRow) - { - if (xianghaoRow == null) return; - decimal sumCaiGouJia = 0m; - decimal sumBaoChuJia = 0m; - DataGridView dgv5 = this.advancedDataGridView5; - if (dgv5 != null && dgv5.Rows != null) - { - foreach (DataGridViewRow yj in dgv5.Rows) - { - if (yj == null || yj.IsNewRow) continue; - sumCaiGouJia += GetCellDecimal(yj, "采购价"); - sumBaoChuJia += GetCellDecimal(yj, "报出价"); - } - } - decimal shuLiang = GetCellDecimal(xianghaoRow, "数量"); - decimal danTaiChengBen = sumCaiGouJia; - decimal chengBenJia = danTaiChengBen * shuLiang; - decimal danTaiBaoChu = sumBaoChuJia; - decimal baoChuJia = danTaiBaoChu * shuLiang; - decimal liRun = baoChuJia - chengBenJia; - decimal liRunLv = chengBenJia == 0m ? 0m : liRun / chengBenJia; - decimal maoLiLv = baoChuJia == 0m ? 0m : liRun / baoChuJia; - SetCell(xianghaoRow, "单台成本", danTaiChengBen); - SetCell(xianghaoRow, "成本价", chengBenJia); - SetCell(xianghaoRow, "单台报出", danTaiBaoChu); - SetCell(xianghaoRow, "报出价", baoChuJia); - SetCell(xianghaoRow, "利润", liRun); - SetCell(xianghaoRow, "利润率", liRunLv); - SetCell(xianghaoRow, "毛利率", maoLiLv); - } - - private void RecalcTuhaoRowFromXianghao(DataGridViewRow tuhaoRow) - { - if (tuhaoRow == null) return; - decimal sumShuLiang = 0m; - decimal sumBaoChuJia = 0m; - decimal sumChengBenJia = 0m; - DataGridView dgv4 = this.advancedDataGridView4; - if (dgv4 != null && dgv4.Rows != null) - { - foreach (DataGridViewRow xh in dgv4.Rows) - { - if (xh == null || xh.IsNewRow) continue; - sumShuLiang += GetCellDecimal(xh, "数量"); - sumBaoChuJia += GetCellDecimal(xh, "报出价"); - sumChengBenJia += GetCellDecimal(xh, "成本价"); - } - } - decimal taiShu = GetCellDecimal(tuhaoRow, "台数"); - decimal xiangGuiShuLiang = sumShuLiang; - decimal danJia = sumBaoChuJia; - decimal zongJia = danJia * taiShu; - decimal chengBenZongJia = sumChengBenJia * taiShu; - decimal maoLi = zongJia - chengBenZongJia; - decimal maoLiLv = zongJia == 0m ? 0m : maoLi / zongJia; - SetCell(tuhaoRow, "箱柜数量", xiangGuiShuLiang); - SetCell(tuhaoRow, "单价", danJia); - SetCell(tuhaoRow, "总价", zongJia); - SetCell(tuhaoRow, "成本总价", chengBenZongJia); - SetCell(tuhaoRow, "毛利", maoLi); - SetCell(tuhaoRow, "毛利率", maoLiLv); - RecalcProjectRowFromTuhao(); - } - - private void RecalcProjectRowFromTuhao() - { - if (string.IsNullOrWhiteSpace(_currentProjectId)) return; - decimal sumXiangGuiShuLiang = 0m; - decimal sumChengBenZongJia = 0m; - decimal sumZongJia = 0m; - DataGridView dgv9 = this.advancedDataGridView9; - if (dgv9 != null && dgv9.Rows != null) - { - foreach (DataGridViewRow th in dgv9.Rows) - { - if (th == null || th.IsNewRow) continue; - sumXiangGuiShuLiang += GetCellDecimal(th, "箱柜数量"); - sumChengBenZongJia += GetCellDecimal(th, "成本总价"); - sumZongJia += GetCellDecimal(th, "总价"); - } - } - decimal xiangGuiTaiShu = sumXiangGuiShuLiang; - decimal baoChuZongJia = sumZongJia; - decimal liRun = baoChuZongJia - sumChengBenZongJia; - decimal liRunLv = sumChengBenZongJia == 0m ? 0m : liRun / sumChengBenZongJia; - DataGridViewRow projRow = FindProjectRowById(_currentProjectId); - if (projRow != null) - { - SetCell(projRow, "箱柜台数", xiangGuiTaiShu); - SetCell(projRow, "成本总价", sumChengBenZongJia); - SetCell(projRow, "报出总价", baoChuZongJia); - SetCell(projRow, "利润", liRun); - SetCell(projRow, "利润率", liRunLv); - } - } - - private void RecalcAllAfterReload() - { - if (string.IsNullOrWhiteSpace(_currentProjectId)) return; - _isRecalculating = true; - _isReloading = true; - try - { - DataGridView dgv5 = this.advancedDataGridView5; - if (dgv5 != null && dgv5.Rows != null) - { - foreach (DataGridViewRow yj in dgv5.Rows) - { - if (yj == null || yj.IsNewRow) continue; - RecalcYuanjianRow(yj); - } - } - var xhRow = GetFirstSelectedRow(this.advancedDataGridView4); - if (xhRow != null) RecalcXianghaoRowFromYuanjian(xhRow); - var thRow = GetFirstSelectedRow(this.advancedDataGridView9); - if (thRow != null) RecalcTuhaoRowFromXianghao(thRow); - - SaveYuanjianTableIfDirty(); - SaveXianghaoTableIfDirty(); - SaveTuhaoTableIfDirty(); - if (_yuanjianTable != null) _yuanjianTable.AcceptChanges(); - if (_xianghaoTable != null) _xianghaoTable.AcceptChanges(); - if (_tuhaoTable != null) _tuhaoTable.AcceptChanges(); - } - finally - { - _isRecalculating = false; - _lastRecalcTime = DateTime.Now; - _isReloading = false; - } - } - - // ---------- 全量数据库重算 ---------- - - private class TuhaoCalcRow { public long RowId; public decimal TaiShu; public string Tuhao; } - private class XianghaoCalcRow { public long RowId; public decimal ShuLiang; public string Xianghao; } - - private void RecalcAllFromDatabase(string projectId) - { - if (string.IsNullOrWhiteSpace(projectId)) projectId = _currentProjectId; - if (string.IsNullOrWhiteSpace(projectId)) return; - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) return; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - var tuhaoRows = new List(); - string selTuhao = "SELECT rowid, 台数, 图号 FROM " + TuhaoTableName + " ORDER BY rowid;"; - using (var sel = new System.Data.SQLite.SQLiteCommand(selTuhao, conn)) - using (var rdr = sel.ExecuteReader()) - { - while (rdr.Read()) - { - var t = new TuhaoCalcRow(); - t.RowId = rdr.GetInt64(0); - t.TaiShu = ParseDecimal(rdr.IsDBNull(1) ? "" : rdr.GetValue(1)); - t.Tuhao = rdr.IsDBNull(2) ? "" : rdr.GetValue(2).ToString().Trim(); - tuhaoRows.Add(t); - } - } - decimal sumProjXiangGui = 0m; - decimal sumProjChengBen = 0m; - decimal sumProjZongJia = 0m; - foreach (var t in tuhaoRows) - { - if (string.IsNullOrWhiteSpace(t.Tuhao)) continue; - try - { - string xhTable = GetXianghaoTableByIndex(t.Tuhao, conn); - if (string.IsNullOrEmpty(xhTable)) - { - UpdateTuhaoCalc(conn, t.RowId, 0m, 0m, 0m, 0m, 0m, 0m); - continue; - } - string xhQuoted = "\"" + xhTable + "\""; - decimal sumThXiangGuiShuLiang = 0m; - decimal sumThBaoChuJia = 0m; - decimal sumThChengBenJia = 0m; - var xhRows = new List(); - string selXh = "SELECT rowid, 数量, 箱号 FROM " + xhQuoted + " ORDER BY rowid;"; - using (var sel = new System.Data.SQLite.SQLiteCommand(selXh, conn)) - using (var rdr = sel.ExecuteReader()) - { - while (rdr.Read()) - { - var x = new XianghaoCalcRow(); - x.RowId = rdr.GetInt64(0); - x.ShuLiang = ParseDecimal(rdr.IsDBNull(1) ? "" : rdr.GetValue(1)); - x.Xianghao = rdr.IsDBNull(2) ? "" : rdr.GetValue(2).ToString(); - xhRows.Add(x); - } - } - foreach (var x in xhRows) - { - try - { - sumThXiangGuiShuLiang += x.ShuLiang; - string yjTable = GetYuanjianTableByIndex(t.Tuhao, x.Xianghao, conn); - decimal sumCaiGou = 0m; - decimal sumBaoChu = 0m; - if (!string.IsNullOrEmpty(yjTable)) - { - string yjQuoted = "\"" + yjTable + "\""; - string selYj = "SELECT rowid, 表价, 采购系数, 报出系数, 数量 FROM " + - yjQuoted + " ORDER BY rowid;"; - using (var sel = new System.Data.SQLite.SQLiteCommand(selYj, conn)) - using (var sr = sel.ExecuteReader()) - { - while (sr.Read()) - { - long yjRid = sr.GetInt64(0); - decimal yjBiaoJia = ParseDecimal(sr.IsDBNull(1) ? "" : sr.GetValue(1)); - decimal yjCgXs = ParseDecimal(sr.IsDBNull(2) ? "" : sr.GetValue(2)); - decimal yjBcXs = ParseDecimal(sr.IsDBNull(3) ? "" : sr.GetValue(3)); - decimal yjSl = ParseDecimal(sr.IsDBNull(4) ? "" : sr.GetValue(4)); - decimal yjCaiGouDanJia = yjBiaoJia * yjCgXs; - decimal yjCaiGouJia = yjCaiGouDanJia * yjSl; - decimal yjBaoChuDanJia = yjCaiGouDanJia * yjBcXs; - decimal yjBaoChuJia = yjBaoChuDanJia * yjSl; - sumCaiGou += yjCaiGouJia; - sumBaoChu += yjBaoChuJia; - UpdateYuanjianCalc(conn, yjQuoted, yjRid, - yjCaiGouDanJia, yjCaiGouJia, yjBaoChuDanJia, yjBaoChuJia); - } - } - } - decimal danTaiChengBen = sumCaiGou; - decimal chengBenJia = danTaiChengBen * x.ShuLiang; - decimal danTaiBaoChu = sumBaoChu; - decimal baoChuJia = danTaiBaoChu * x.ShuLiang; - decimal xhLiRun = baoChuJia - chengBenJia; - decimal xhLiRunLv = chengBenJia == 0m ? 0m : xhLiRun / chengBenJia; - decimal xhMaoLiLv = baoChuJia == 0m ? 0m : xhLiRun / baoChuJia; - sumThBaoChuJia += baoChuJia; - sumThChengBenJia += chengBenJia; - UpdateXianghaoCalc(conn, xhQuoted, x.RowId, - danTaiChengBen, chengBenJia, danTaiBaoChu, baoChuJia, - xhLiRun, xhLiRunLv, xhMaoLiLv); - } - catch { } - } - decimal xiangGuiShuLiang = sumThXiangGuiShuLiang; - decimal danJia = sumThBaoChuJia; - decimal zongJia = danJia * t.TaiShu; - decimal chengBenZongJia = sumThChengBenJia * t.TaiShu; - decimal maoLi = zongJia - chengBenZongJia; - decimal maoLiLv = zongJia == 0m ? 0m : maoLi / zongJia; - sumProjXiangGui += xiangGuiShuLiang; - sumProjChengBen += chengBenZongJia; - sumProjZongJia += zongJia; - UpdateTuhaoCalc(conn, t.RowId, xiangGuiShuLiang, danJia, - zongJia, chengBenZongJia, maoLi, maoLiLv); - } - catch { } - } - decimal projLiRun = sumProjZongJia - sumProjChengBen; - decimal projLiRunLv = sumProjChengBen == 0m ? 0m : projLiRun / sumProjChengBen; - UpdateProjectQuoteTotalsById(projectId, sumProjXiangGui, - sumProjChengBen, sumProjZongJia, projLiRun, projLiRunLv); - } - } - catch { } - } - - private static void UpdateYuanjianCalc(System.Data.SQLite.SQLiteConnection conn, - string yjQuoted, long rowId, - decimal caiGouDanJia, decimal caiGouJia, decimal baoChuDanJia, decimal baoChuJia) - { - string sql = "UPDATE " + yjQuoted + " SET " + - "采购单价=@a, 采购价=@b, 报出单价=@c, 报出价=@d WHERE rowid=@rid;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@a", caiGouDanJia == 0m ? (object)DBNull.Value : (object)caiGouDanJia); - cmd.Parameters.AddWithValue("@b", caiGouJia == 0m ? (object)DBNull.Value : (object)caiGouJia); - cmd.Parameters.AddWithValue("@c", baoChuDanJia == 0m ? (object)DBNull.Value : (object)baoChuDanJia); - cmd.Parameters.AddWithValue("@d", baoChuJia == 0m ? (object)DBNull.Value : (object)baoChuJia); - cmd.Parameters.AddWithValue("@rid", rowId); - cmd.ExecuteNonQuery(); - } - } - - private static void UpdateXianghaoCalc(System.Data.SQLite.SQLiteConnection conn, - string xhQuoted, long rowId, - decimal danTaiChengBen, decimal chengBenJia, decimal danTaiBaoChu, decimal baoChuJia, - decimal liRun, decimal liRunLv, decimal maoLiLv) - { - string sql = "UPDATE " + xhQuoted + " SET " + - "单台成本=@a, 成本价=@b, 单台报出=@c, 报出价=@d, " + - "利润=@e, 利润率=@f, 毛利率=@g WHERE rowid=@rid;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@a", danTaiChengBen == 0m ? (object)DBNull.Value : (object)danTaiChengBen); - cmd.Parameters.AddWithValue("@b", chengBenJia == 0m ? (object)DBNull.Value : (object)chengBenJia); - cmd.Parameters.AddWithValue("@c", danTaiBaoChu == 0m ? (object)DBNull.Value : (object)danTaiBaoChu); - cmd.Parameters.AddWithValue("@d", baoChuJia == 0m ? (object)DBNull.Value : (object)baoChuJia); - cmd.Parameters.AddWithValue("@e", liRun == 0m ? (object)DBNull.Value : (object)liRun); - cmd.Parameters.AddWithValue("@f", liRunLv.ToString()); - cmd.Parameters.AddWithValue("@g", maoLiLv.ToString()); - cmd.Parameters.AddWithValue("@rid", rowId); - cmd.ExecuteNonQuery(); - } - } - - private static void UpdateTuhaoCalc(System.Data.SQLite.SQLiteConnection conn, - long rowId, decimal xiangGuiShuLiang, decimal danJia, - decimal zongJia, decimal chengBenZongJia, decimal maoLi, decimal maoLiLv) - { - string sql = "UPDATE " + TuhaoTableName + " SET " + - "箱柜数量=@a, 单价=@b, 总价=@c, 成本总价=@d, 毛利=@e, 毛利率=@f " + - "WHERE rowid=@rid;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@a", xiangGuiShuLiang == 0m ? (object)DBNull.Value : (object)xiangGuiShuLiang); - cmd.Parameters.AddWithValue("@b", danJia == 0m ? (object)DBNull.Value : (object)danJia); - cmd.Parameters.AddWithValue("@c", zongJia == 0m ? (object)DBNull.Value : (object)zongJia); - cmd.Parameters.AddWithValue("@d", chengBenZongJia == 0m ? (object)DBNull.Value : (object)chengBenZongJia); - cmd.Parameters.AddWithValue("@e", maoLi == 0m ? (object)DBNull.Value : (object)maoLi); - cmd.Parameters.AddWithValue("@f", maoLiLv.ToString()); - cmd.Parameters.AddWithValue("@rid", rowId); - cmd.ExecuteNonQuery(); - } - } - - private void UpdateProjectQuoteTotalsById(string projectId, - decimal xiangGuiTaiShu, decimal chengBenZongJia, - decimal baoChuZongJia, decimal liRun, decimal liRunLv) - { - if (string.IsNullOrWhiteSpace(projectId)) return; - string dbPath = GetDbFullPath(ProjectsDbPath); - if (!File.Exists(dbPath)) return; - try - { - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - string sql = "UPDATE " + ProjectsTableName + " SET " + - "箱柜台数=@xgts, 成本总价=@cbzj, 报出总价=@bczj, " + - "利润=@lr, 利润率=@lrl WHERE 项目编号=@id;"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - cmd.Parameters.AddWithValue("@xgts", xiangGuiTaiShu == 0m ? (object)DBNull.Value : (object)xiangGuiTaiShu); - cmd.Parameters.AddWithValue("@cbzj", chengBenZongJia == 0m ? (object)DBNull.Value : (object)chengBenZongJia); - cmd.Parameters.AddWithValue("@bczj", baoChuZongJia == 0m ? (object)DBNull.Value : (object)baoChuZongJia); - cmd.Parameters.AddWithValue("@lr", liRun == 0m ? (object)DBNull.Value : (object)liRun); - cmd.Parameters.AddWithValue("@lrl", liRunLv.ToString()); - cmd.Parameters.AddWithValue("@id", projectId); - cmd.ExecuteNonQuery(); - } - } - } - catch { } - } - - // ============================================================ - // 事件:CellValueChanged / DirtyStateChanged / CellEndEdit - // ============================================================ - - private void Grid_DirtyStateChanged(object sender, EventArgs e) - { - if (_isRecalculating || _isReloading) return; - var msSinceRecalc = (DateTime.Now - _lastRecalcTime).TotalMilliseconds; - if (msSinceRecalc < 2000) return; - var dgv = sender as DataGridView; - if (dgv != null && dgv.IsCurrentCellDirty) - dgv.CommitEdit(DataGridViewDataErrorContexts.Commit); - } - - private void Yuanjian_CellValueChanged(object sender, DataGridViewCellEventArgs e) - { - if (_isRecalculating || _isReloading) return; - if (e.RowIndex < 0) return; - var dgv = this.advancedDataGridView5; - if (dgv == null || e.RowIndex >= dgv.Rows.Count) return; - var row = dgv.Rows[e.RowIndex]; - if (row == null || row.IsNewRow) return; - _isRecalculating = true; - try - { - RecalcYuanjianRow(row); - var xhRow = GetFirstSelectedRow(this.advancedDataGridView4); - if (xhRow != null) - { - RecalcXianghaoRowFromYuanjian(xhRow); - var thRow = GetFirstSelectedRow(this.advancedDataGridView9); - if (thRow != null) RecalcTuhaoRowFromXianghao(thRow); - } - } - finally { _isRecalculating = false; _lastRecalcTime = DateTime.Now; } - } - - private void Xianghao_CellValueChanged(object sender, DataGridViewCellEventArgs e) - { - if (_isRecalculating || _isReloading) return; - if (e.RowIndex < 0) return; - var dgv = this.advancedDataGridView4; - if (dgv == null || e.RowIndex >= dgv.Rows.Count) return; - var row = dgv.Rows[e.RowIndex]; - if (row == null || row.IsNewRow) return; - _isRecalculating = true; - try - { - var thRow = GetFirstSelectedRow(this.advancedDataGridView9); - if (thRow != null) RecalcTuhaoRowFromXianghao(thRow); - } - finally { _isRecalculating = false; _lastRecalcTime = DateTime.Now; } - } - - private void Tuhao_CellValueChanged(object sender, DataGridViewCellEventArgs e) - { - if (_isRecalculating || _isReloading) return; - if (e.RowIndex < 0) return; - var dgv = this.advancedDataGridView9; - if (dgv == null || e.RowIndex >= dgv.Rows.Count) return; - var row = dgv.Rows[e.RowIndex]; - if (row == null || row.IsNewRow) return; - DataGridViewColumn col = e.ColumnIndex >= 0 ? dgv.Columns[e.ColumnIndex] : null; - string colName = col == null ? "" : - (!string.IsNullOrEmpty(col.DataPropertyName) ? col.DataPropertyName : col.HeaderText); - if (colName != "台数") return; - _isRecalculating = true; - try { RecalcTuhaoRowFromXianghao(row); } - finally { _isRecalculating = false; _lastRecalcTime = DateTime.Now; } - } - - /// CellEndEdit:把公式列的字符串值转为 double,让 DefaultCellStyle.Format 生效。 - private void Grid_CellEndEdit(object sender, DataGridViewCellEventArgs e) - { - var dgv = sender as DataGridView; - if (dgv == null || e.ColumnIndex < 0 || e.ColumnIndex >= dgv.Columns.Count) return; - string dp = dgv.Columns[e.ColumnIndex].DataPropertyName; - string cn = dgv.Columns[e.ColumnIndex].HeaderText; - string colKey = !string.IsNullOrEmpty(dp) ? dp : cn; - if (!s_公式列集合.Contains(colKey)) return; - if (e.RowIndex < 0 || e.RowIndex >= dgv.Rows.Count) return; - object v = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; - if (v == null || v is double) return; - string str = v.ToString().Trim(); - if (string.IsNullOrEmpty(str)) return; - double d; - if (double.TryParse(str, out d)) - dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = d; - } - - // ============================================================ - // SelectionChanged 联动 - // ============================================================ - - private void advancedDataGridView9_SelectionChanged(object sender, EventArgs e) - { - if (_isReloading) return; - if (this.advancedDataGridView9 != null && this.advancedDataGridView9.SelectedCells.Count > 1) return; - DataGridViewRow row = GetFirstSelectedRow(this.advancedDataGridView9); - if (row == null) return; - string tuhao = GetCellValueAsString(row, "图号"); - if (tuhao == _currentTuhao) return; - _currentTuhao = tuhao; - ReloadXianghaoByTuhao(_currentProjectId, _currentTuhao); - } - - private void advancedDataGridView4_SelectionChanged(object sender, EventArgs e) - { - if (_isReloading) return; - if (this.advancedDataGridView4 != null && this.advancedDataGridView4.SelectedCells.Count > 1) return; - DataGridViewRow row = GetFirstSelectedRow(this.advancedDataGridView4); - if (row == null) return; - string xh = GetCellValueAsString(row, "箱号"); - if (xh == _currentXianghao) return; - _currentXianghao = xh; - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - } - - private void advancedDataGridView5_SelectionChanged(object sender, EventArgs e) { } - - // ============================================================ - // ★ 点击表格行 → 定位到对应的扒图框(缩放居中) - // 读取数据行的"框Handle"列,用 Handle 反查 CAD 实体,缩放到实体范围 - // ============================================================ - private void Grid_CellClick_Zoom(object sender, DataGridViewCellEventArgs e) - { - if (_isReloading) return; - if (e.RowIndex < 0) return; - DataGridView dgv = sender as DataGridView; - if (dgv == null) return; - DataGridViewRow row = dgv.Rows[e.RowIndex]; - if (row == null || row.IsNewRow) return; - // ★ 直接从 DataRow 读取"框Handle"(不依赖 DataGridView 列映射) - string handle = ""; - var drv = row.DataBoundItem as DataRowView; - if (drv != null && drv.Row != null && drv.Row.Table.Columns.Contains("框Handle")) - { - object v = drv.Row["框Handle"]; - if (v != null && v != DBNull.Value) handle = v.ToString().Trim(); - } - if (!string.IsNullOrWhiteSpace(handle)) - { - ZoomToFrameHandle(handle); - } - } - - /// - /// 根据框 Handle 字符串定位 CAD 视图:缩放居中到框的位置。 - /// ★ 只有当框不在当前屏幕可见区域时才跳转,已在屏幕上则不动。 - /// Handle 是扒图时绘制的彩色矩形框的句柄(十六进制字符串)。 - /// - private static void ZoomToFrameHandle(string handle) - { - if (string.IsNullOrWhiteSpace(handle)) return; - try - { - var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; - if (doc == null) return; - var db = doc.Database; - var ed = doc.Editor; - - Autodesk.AutoCAD.DatabaseServices.Extents3d ext; - using (var tr = db.TransactionManager.StartTransaction()) - { - // ★ 用 Handle 字符串反查 ObjectId(Handle 存为十六进制) - long handleVal; - if (!long.TryParse(handle, - System.Globalization.NumberStyles.AllowHexSpecifier, - System.Globalization.CultureInfo.InvariantCulture, - out handleVal)) - { - tr.Commit(); - return; - } - Autodesk.AutoCAD.DatabaseServices.Handle h = - new Autodesk.AutoCAD.DatabaseServices.Handle(handleVal); - Autodesk.AutoCAD.DatabaseServices.ObjectId id; - if (!db.TryGetObjectId(h, out id) || id.IsNull) - { - tr.Commit(); - return; - } - var ent = tr.GetObject(id, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead) - as Autodesk.AutoCAD.DatabaseServices.Entity; - if (ent == null) { tr.Commit(); return; } - - try { ext = ent.GeometricExtents; } - catch { tr.Commit(); return; } - - tr.Commit(); - } - - // ★ 获取当前视图范围,判断框是否已在屏幕可见区域 - using (var view = ed.GetCurrentView()) - { - double viewLeft = view.CenterPoint.X - view.Width / 2.0; - double viewRight = view.CenterPoint.X + view.Width / 2.0; - double viewBottom = view.CenterPoint.Y - view.Height / 2.0; - double viewTop = view.CenterPoint.Y + view.Height / 2.0; - - // 框完全在屏幕可见区域内 → 不跳转 - if (ext.MinPoint.X >= viewLeft && ext.MaxPoint.X <= viewRight && - ext.MinPoint.Y >= viewBottom && ext.MaxPoint.Y <= viewTop) - { - return; - } - - // ★ 框不在可见区域(或部分超出) → 缩放居中到框位置 - double cx = (ext.MinPoint.X + ext.MaxPoint.X) / 2.0; - double cy = (ext.MinPoint.Y + ext.MaxPoint.Y) / 2.0; - double w = (ext.MaxPoint.X - ext.MinPoint.X) * 2.0 + 40.0; - double hgt = (ext.MaxPoint.Y - ext.MinPoint.Y) * 2.0 + 40.0; - view.CenterPoint = new Autodesk.AutoCAD.Geometry.Point2d(cx, cy); - view.Height = hgt; - view.Width = w; - ed.SetCurrentView(view); - } - } - catch { } - } - - /// - /// ★ 自动保存当前 DWG 文件,确保扒图框持久化。 - /// CAD 关闭时如果不保存 DWG,扒图绘制的框会丢失,Handle 也失效, - /// 导致重新打开后点击表格行无法定位框。 - /// - // ★ 自动保存节流:连续框选时每次都 SaveAs 整张 DWG(大图秒级)会明显卡顿。 - // 距上次保存不足 30 秒则跳过本次,停手后的下一次保存会兜底写入。 - private static DateTime _lastDwgSaveTime = DateTime.MinValue; - - private static void SaveCurrentDwg() - { - try - { - // 节流:30 秒内已保存过则跳过(大图整盘写入是框选卡顿的另一个大头) - if ((DateTime.Now - _lastDwgSaveTime).TotalSeconds < 30) return; - - var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; - if (doc == null) return; - var db = doc.Database; - // 只在文件已保存过(有文件名)时自动保存,新建未保存的文件跳过 - if (!string.IsNullOrEmpty(db.Filename) && File.Exists(db.Filename)) - { - db.SaveAs(db.Filename, Autodesk.AutoCAD.DatabaseServices.DwgVersion.Current); - _lastDwgSaveTime = DateTime.Now; - } - } - catch { } - } - - /// - /// ★ 删除指定 Handle 对应的 CAD 框实体(单个,转发到批量方法)。 - /// - private void DeleteFrameByHandle(string handle) - { - DeleteFramesByHandles(new string[] { handle }); - } - - /// - /// ★ 批量删除多个 Handle 对应的框+蒙版(单事务+单次屏幕刷新)。 - /// 旧实现逐个 DeleteFrameByHandle:每删一个蒙版就 开事务→提交→UpdateScreen→Regen 全图, - /// N 个蒙版 = N 次全图重生成,这就是"再次选择/删除已选蒙版"时卡顿的根源。 - /// 现在一个事务内全部擦除、只提交一次、只刷新一次,速度从 O(N) 次重生成降到 1 次。 - /// 说明:AutoCAD 的实体/事务只能在文档主线程访问(后台线程调用会 eLockViolation/崩溃), - /// 所以提速靠"批量合并",效果等效于并行处理。 - /// - private void DeleteFramesByHandles(System.Collections.Generic.IEnumerable handles) - { - var list = new List(); - if (handles != null) - foreach (string h in handles) - if (!string.IsNullOrWhiteSpace(h)) list.Add(h); - if (list.Count == 0) { Log("[DeleteFramesByHandles] 无有效 handle,跳过"); return; } - try - { - var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; - if (doc == null) { Log("[DeleteFramesByHandles] doc 为 null"); return; } - // ★ 用 DocumentLock 锁定文档,避免 eLockViolation - using (doc.LockDocument()) - { - var db = doc.Database; - int erased = 0; - using (var tr = db.TransactionManager.StartTransaction()) - { - foreach (string handle in list) - { - try - { - long handleVal; - if (!long.TryParse(handle, - System.Globalization.NumberStyles.AllowHexSpecifier, - System.Globalization.CultureInfo.InvariantCulture, - out handleVal)) - { - Log("[DeleteFramesByHandles] Handle 解析失败: " + handle); - continue; - } - Autodesk.AutoCAD.DatabaseServices.Handle h = - new Autodesk.AutoCAD.DatabaseServices.Handle(handleVal); - Autodesk.AutoCAD.DatabaseServices.ObjectId id; - if (!db.TryGetObjectId(h, out id) || id.IsNull) - { - Log("[DeleteFramesByHandles] Handle 找不到对象: " + handle); - continue; - } - var ent = tr.GetObject(id, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) - as Autodesk.AutoCAD.DatabaseServices.Entity; - if (ent == null) { Log("[DeleteFramesByHandles] 实体为 null: " + handle); continue; } - // ★ 先删除同组的其他实体(Hatch 蒙版)和 Group 本身,再删主实体边框 - PaTextSelector.EraseGroupForEntity(tr, id); - if (!ent.IsErased) ent.Erase(); - erased++; - } - catch (System.Exception exH) - { - Log("[DeleteFramesByHandles] 单个删除失败 " + handle + ": " + exH.Message); - } - } - tr.Commit(); // ★ 全部擦除完只提交一次 - } - // ★ 只刷新一次屏幕(旧版每个蒙版刷一次+Regen 全图一次) - doc.Editor.UpdateScreen(); - doc.Editor.Regen(); - Log("[DeleteFramesByHandles] 批量删除完成: 请求=" + list.Count + " 实删=" + erased); - } // end LockDocument - } - catch (System.Exception ex) { Log("[DeleteFramesByHandles] 异常: " + ex.Message); } - } - - /// - /// ★ 收集指定图号下所有箱号表和元件表的框Handle(级联删框用)。 - /// 不包含图号表自身的框(图号行框由调用方从内存表收集)。 - /// - private void CollectFrameHandlesForTuhao(string projectId, string tuhao, List handles) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao)) return; - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) { Log("[CollectFrameHandlesForTuhao] 数据库不存在: " + dbPath); return; } - int beforeCount = handles.Count; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - // 箱号表 - string xhTbl = GetXianghaoTableByIndex(projectId, tuhao); - Log("[CollectFrameHandlesForTuhao] 图号=" + tuhao + " 箱号表名=" + (xhTbl ?? "(null)")); - if (!string.IsNullOrEmpty(xhTbl) && TableExists(conn, xhTbl)) - { - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle, 箱号 FROM \"" + xhTbl + "\";", conn)) - using (var reader = cmd.ExecuteReader()) - { - while (reader.Read()) - { - string h = reader.IsDBNull(0) ? "" : reader.GetString(0); - if (!string.IsNullOrWhiteSpace(h)) handles.Add(h); - string xh = reader.IsDBNull(1) ? "" : reader.GetString(1); - Log("[CollectFrameHandlesForTuhao] 箱号=" + xh + " 框Handle=" + h); - // 查该箱号的元件表 - if (!string.IsNullOrWhiteSpace(xh)) - { - string yjTbl = GetYuanjianTableByIndex(projectId, tuhao, xh); - if (!string.IsNullOrEmpty(yjTbl) && TableExists(conn, yjTbl)) - { - using (var yjCmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + yjTbl + "\";", conn)) - using (var yjReader = yjCmd.ExecuteReader()) - while (yjReader.Read()) - { - string yh = yjReader.IsDBNull(0) ? "" : yjReader.GetString(0); - if (!string.IsNullOrWhiteSpace(yh)) handles.Add(yh); - Log("[CollectFrameHandlesForTuhao] 元件框Handle=" + yh); - } - } - } - } - } - } - } - Log("[CollectFrameHandlesForTuhao] 新增框Handle数: " + (handles.Count - beforeCount)); - } - catch (Exception ex) { Log("[CollectFrameHandlesForTuhao] 异常: " + ex.Message); } - } - - /// - /// ★ 收集指定箱号下元件表的框Handle(级联删框用)。 - /// 不包含箱号表自身的框(箱号行框由调用方从内存表收集)。 - /// - private void CollectFrameHandlesForXianghao(string projectId, string tuhao, string xianghao, List handles) - { - if (string.IsNullOrWhiteSpace(projectId) || string.IsNullOrWhiteSpace(tuhao) || - string.IsNullOrWhiteSpace(xianghao)) return; - try - { - string dbPath = GetQuoteDbPath(projectId); - if (!File.Exists(dbPath)) { Log("[CollectFrameHandlesForXianghao] 数据库不存在: " + dbPath); return; } - int beforeCount = handles.Count; - using (var conn = new System.Data.SQLite.SQLiteConnection(GetConnString(dbPath))) - { - conn.Open(); - // ★ 先收集箱号表自身该箱号的框Handle(之前遗漏,导致删箱号时蒙版不删) - string xhTbl = GetXianghaoTableByIndex(projectId, tuhao); - Log("[CollectFrameHandlesForXianghao] 图号=" + tuhao + " 箱号=" + xianghao + " 箱号表名=" + (xhTbl ?? "(null)")); - if (!string.IsNullOrEmpty(xhTbl) && TableExists(conn, xhTbl)) - { - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + xhTbl + "\" WHERE 箱号=@xh;", conn)) - { - cmd.Parameters.AddWithValue("@xh", xianghao); - using (var reader = cmd.ExecuteReader()) - while (reader.Read()) - { - string h = reader.IsDBNull(0) ? "" : reader.GetString(0); - if (!string.IsNullOrWhiteSpace(h)) handles.Add(h); - Log("[CollectFrameHandlesForXianghao] 箱号自身框Handle=" + h); - } - } - } - // ★ 再收集该箱号下元件表的框Handle - string yjTbl = GetYuanjianTableByIndex(projectId, tuhao, xianghao); - Log("[CollectFrameHandlesForXianghao] 元件表名=" + (yjTbl ?? "(null)")); - if (!string.IsNullOrEmpty(yjTbl) && TableExists(conn, yjTbl)) - { - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT 框Handle FROM \"" + yjTbl + "\";", conn)) - using (var reader = cmd.ExecuteReader()) - while (reader.Read()) - { - string h = reader.IsDBNull(0) ? "" : reader.GetString(0); - if (!string.IsNullOrWhiteSpace(h)) handles.Add(h); - Log("[CollectFrameHandlesForXianghao] 元件框Handle=" + h); - } - } - } - Log("[CollectFrameHandlesForXianghao] 新增框Handle数: " + (handles.Count - beforeCount)); - } - catch (Exception ex) { Log("[CollectFrameHandlesForXianghao] 异常: " + ex.Message); } - } - - /// 检查表是否存在(SQLite)。 - private static bool TableExists(System.Data.SQLite.SQLiteConnection conn, string tableName) - { - if (conn == null || string.IsNullOrWhiteSpace(tableName)) return false; - try - { - string name = tableName.Trim().Trim('"'); - using (var cmd = new System.Data.SQLite.SQLiteCommand( - "SELECT name FROM sqlite_master WHERE type='table' AND name=@n;", conn)) - { - cmd.Parameters.AddWithValue("@n", name); - object o = cmd.ExecuteScalar(); - return o != null && o != DBNull.Value; - } - } - catch { return false; } - } - - // ============================================================ - // 双击项目行 → 进入项目 - // ============================================================ - - private void advancedDataGridView6_CellDoubleClick(object sender, DataGridViewCellEventArgs e) - { - if (e.RowIndex < 0) return; - DataGridViewRow row = this.advancedDataGridView6.Rows[e.RowIndex]; - string pid = GetCellValueAsString(row, "项目编号"); - if (string.IsNullOrWhiteSpace(pid)) return; - - // 切项目前:先把当前项目的所有改动回写库,然后清空缓存 - if (!string.IsNullOrWhiteSpace(_currentProjectId) && _currentProjectId != pid) - { - try - { - if (this.advancedDataGridView5 != null) this.advancedDataGridView5.EndEdit(); - if (this.advancedDataGridView4 != null) this.advancedDataGridView4.EndEdit(); - if (this.advancedDataGridView9 != null) this.advancedDataGridView9.EndEdit(); - if (_tuhaoTable != null) - SaveTableToDatabase(_tuhaoTable, _currentProjectId, TuhaoTableName, null, null, true); - foreach (var kv in _xianghaoCache) - if (kv.Value != null && !string.IsNullOrWhiteSpace(kv.Value.TableName)) - SaveTableToDatabase(kv.Value, _currentProjectId, - "\"" + kv.Value.TableName + "\"", null, null, true); - foreach (var kv in _yuanjianCache) - if (kv.Value != null && !string.IsNullOrWhiteSpace(kv.Value.TableName)) - SaveTableToDatabase(kv.Value, _currentProjectId, - "\"" + kv.Value.TableName + "\"", null, null, true); - } - catch { } - _xianghaoCache.Clear(); - _yuanjianCache.Clear(); - _tuhaoTable = null; - } - _currentProjectId = pid; - EnterProjectCore(pid); - } - - private void EnterProjectCore(string pid) - { - // 切换主区域到报价页(tabPage4) - this.tabControl2.SelectedTab = this.tabPage4; - EnsureQuoteDbExists(pid); - LoadPriceFormatConfig(pid); - RecalcAllFromDatabase(pid); - ReloadTuhaoByProject(pid); - ApplyPriceFormat(this.advancedDataGridView9, _单台小数位文本); - ApplyPriceFormat(this.advancedDataGridView4, _单台小数位文本); - ApplyPriceFormat(this.advancedDataGridView5, _单台小数位文本); - ApplyPriceFormat(this.advancedDataGridView6, _项目小数位文本); - } - - // ============================================================ - // ★ 右键点击时保持多行选中 - // WinForms 默认行为:右键点击未选中行 → 清除多选,只选一行 - // 修正:右键点击已选中行 → 保持多选;点击未选中行 → 正常切换 - // ============================================================ - private void Grid_MouseDown_KeepMultiSelect(object sender, MouseEventArgs e) - { - if (e.Button != MouseButtons.Right) return; - var dgv = sender as DataGridView; - if (dgv == null) return; - var hit = dgv.HitTest(e.X, e.Y); - if (hit.Type != DataGridViewHitTestType.Cell && hit.Type != DataGridViewHitTestType.RowHeader) return; - if (hit.RowIndex < 0) return; - // 如果右键点击的行已经在选中行中,不做任何操作(保持多选) - // 如果不在选中行中,让默认行为生效(选中该行) - foreach (DataGridViewRow r in dgv.SelectedRows) - { - if (r.Index == hit.RowIndex) return; - } - // 选中行中没有包含右键点击的行 → 手动选中该行 - dgv.ClearSelection(); - dgv.Rows[hit.RowIndex].Selected = true; - dgv.CurrentCell = dgv.Rows[hit.RowIndex].Cells[0]; - } - - // ============================================================ - // ★ 键盘 Delete 键批量删除选中行 - // 图号表→MenuTuhao_Delete_Click;箱号表→MenuXianghao_Delete_Click;元件表→MenuYuanjian_Delete_Click - // ============================================================ - private void Grid_KeyDown_Delete(object sender, KeyEventArgs e) - { - if (e.KeyCode != Keys.Delete) return; - var dgv = sender as DataGridView; - if (dgv == null) return; - if (dgv.SelectedRows.Count == 0 && dgv.SelectedCells.Count == 0) return; - if (dgv.IsCurrentCellInEditMode) return; // 编辑模式下不拦截 Delete - - e.SuppressKeyPress = true; - e.Handled = true; - - if (dgv == this.advancedDataGridView9) - MenuTuhao_Delete_Click(null, null); - else if (dgv == this.advancedDataGridView4) - MenuXianghao_Delete_Click(null, null); - else if (dgv == this.advancedDataGridView5) - MenuYuanjian_Delete_Click(null, null); - } - - // ============================================================ - // 右键菜单:创建 + 行移动 - // ============================================================ - - private void BuildContextMenus() - { - // 图号菜单(advancedDataGridView9) - _menuTuhao = new ContextMenuStrip(); - _menuTuhao.Items.Add("新建图号", null, MenuTuhao_New_Click); - _menuTuhao.Items.Add("删除图号", null, MenuTuhao_Delete_Click); - _menuTuhao.Items.Add(new ToolStripSeparator()); - _menuTuhao.Items.Add("置顶", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView9, RowMoveAction.Top)); - _menuTuhao.Items.Add("向上移动", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView9, RowMoveAction.Up)); - _menuTuhao.Items.Add("向下移动", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView9, RowMoveAction.Down)); - _menuTuhao.Items.Add("置底", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView9, RowMoveAction.Bottom)); - _menuTuhao.Items.Add("移动到...", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView9, RowMoveAction.To)); - this.advancedDataGridView9.ContextMenuStrip = _menuTuhao; - - // 箱号菜单(advancedDataGridView4) - _menuXianghao = new ContextMenuStrip(); - _menuXianghao.Items.Add("新建箱号", null, MenuXianghao_New_Click); - _menuXianghao.Items.Add("删除箱号", null, MenuXianghao_Delete_Click); - _menuXianghao.Items.Add(new ToolStripSeparator()); - _menuXianghao.Items.Add("置顶", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView4, RowMoveAction.Top)); - _menuXianghao.Items.Add("向上移动", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView4, RowMoveAction.Up)); - _menuXianghao.Items.Add("向下移动", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView4, RowMoveAction.Down)); - _menuXianghao.Items.Add("置底", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView4, RowMoveAction.Bottom)); - _menuXianghao.Items.Add("移动到...", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView4, RowMoveAction.To)); - this.advancedDataGridView4.ContextMenuStrip = _menuXianghao; - - // 元件菜单(advancedDataGridView5) - _menuYuanjian = new ContextMenuStrip(); - _menuYuanjian.Items.Add("新建元件", null, MenuYuanjian_New_Click); - _menuYuanjian.Items.Add("删除元件", null, MenuYuanjian_Delete_Click); - _menuYuanjian.Items.Add("合并元件", null, MenuYuanjian_Merge_Click); - _menuYuanjian.Items.Add(new ToolStripSeparator()); - _menuYuanjian.Items.Add("置顶", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView5, RowMoveAction.Top)); - _menuYuanjian.Items.Add("向上移动", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView5, RowMoveAction.Up)); - _menuYuanjian.Items.Add("向下移动", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView5, RowMoveAction.Down)); - _menuYuanjian.Items.Add("置底", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView5, RowMoveAction.Bottom)); - _menuYuanjian.Items.Add("移动到...", null, (s, e) => MoveSelectedRowInGrid(this.advancedDataGridView5, RowMoveAction.To)); - this.advancedDataGridView5.ContextMenuStrip = _menuYuanjian; - } - - private enum RowMoveAction { Top, Up, Down, Bottom, To } - - private void MoveSelectedRowInGrid(DataGridView dgv, RowMoveAction action) - { - if (dgv == null || string.IsNullOrWhiteSpace(_currentProjectId)) return; - DataTable table = null; - System.Action reloadAction = null; - if (dgv == this.advancedDataGridView5) - { - table = _yuanjianTable; - reloadAction = () => ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - } - else if (dgv == this.advancedDataGridView4) - { - table = _xianghaoTable; - reloadAction = () => ReloadXianghaoByTuhao(_currentProjectId, _currentTuhao); - } - else if (dgv == this.advancedDataGridView9) - { - table = _tuhaoTable; - reloadAction = () => ReloadTuhaoByProject(_currentProjectId); - } - if (table == null || table.Rows.Count == 0) - { - MessageBox.Show(this, "没有数据可移动。", "移动行", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var dgvRow = GetFirstSelectedRow(dgv); - if (dgvRow == null) - { - MessageBox.Show(this, "请先选择要移动的行。", "移动行", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - int dataCount = dgv.Rows.Count; - if (dgv.AllowUserToAddRows) dataCount--; - if (dataCount <= 0) return; - int oldIndex = dgvRow.Index; - if (oldIndex >= dataCount) return; - - string rememberTuhao = _currentTuhao; - string rememberXianghao = _currentXianghao; - int newIndex = -1; - _isReloading = true; - try - { - dgv.EndEdit(); - newIndex = oldIndex; - switch (action) - { - case RowMoveAction.Top: newIndex = 0; break; - case RowMoveAction.Up: newIndex = Math.Max(0, oldIndex - 1); break; - case RowMoveAction.Down: newIndex = Math.Min(dataCount - 1, oldIndex + 1); break; - case RowMoveAction.Bottom: newIndex = dataCount - 1; break; - case RowMoveAction.To: - string input = ShowInputDialog("移动到", - "请输入目标行号(1-" + dataCount + "):", (oldIndex + 1).ToString()); - if (string.IsNullOrEmpty(input)) { newIndex = -1; return; } - int target; - if (!int.TryParse(input.Trim(), out target)) - { - MessageBox.Show(this, "请输入有效数字。", "移动到", MessageBoxButtons.OK, MessageBoxIcon.Warning); - newIndex = -1; - return; - } - newIndex = Math.Max(0, Math.Min(dataCount - 1, target - 1)); - break; - } - if (newIndex == oldIndex) { newIndex = -1; return; } - - DataRow rowToMove = table.Rows[oldIndex]; - object[] savedValues = rowToMove.ItemArray; - table.Rows.Remove(rowToMove); - DataRow newRow = table.NewRow(); - newRow.ItemArray = savedValues; - table.Rows.InsertAt(newRow, newIndex); - - if (table.Columns.Contains("序号")) - { - for (int i = 0; i < table.Rows.Count; i++) table.Rows[i]["序号"] = (i + 1).ToString(); - } - if (dgv == this.advancedDataGridView9) - SaveTableToDatabase(table, _currentProjectId, TuhaoTableName, null, null, true); - else - SaveTableToDatabase(table, _currentProjectId, "\"" + table.TableName + "\"", null, null, true); - } - catch (Exception ex) - { - MessageBox.Show(this, "移动行失败:\n" + ex.Message, "移动行", MessageBoxButtons.OK, MessageBoxIcon.Error); - newIndex = -1; - } - finally - { - _isReloading = false; - if (newIndex >= 0) - { - if (dgv == this.advancedDataGridView9) - SelectRowByValue(this.advancedDataGridView9, "图号", rememberTuhao); - else if (dgv == this.advancedDataGridView4) - SelectRowByValue(this.advancedDataGridView4, "箱号", rememberXianghao); - else if (dgv == this.advancedDataGridView5) - SelectRowByValue(this.advancedDataGridView5, "序号", (newIndex + 1).ToString()); - } - } - } - - private void MoveLastRowBelowSelected(DataGridView dgv, DataTable table, - int afterIndex, string dbTableName, string projectId) - { - if (dgv == null || table == null || afterIndex < 0 || table.Rows.Count < 2) return; - int lastIndex = table.Rows.Count - 1; - int targetIndex = afterIndex + 1; - if (targetIndex >= lastIndex) return; - object[] savedValues = table.Rows[lastIndex].ItemArray; - table.Rows.RemoveAt(lastIndex); - DataRow newRow = table.NewRow(); - newRow.ItemArray = savedValues; - table.Rows.InsertAt(newRow, targetIndex); - if (table.Columns.Contains("序号")) - { - for (int i = 0; i < table.Rows.Count; i++) table.Rows[i]["序号"] = (i + 1).ToString(); - } - SaveTableToDatabase(table, projectId, dbTableName, null, null, true); - try { if (targetIndex < dgv.Rows.Count) dgv.FirstDisplayedScrollingRowIndex = targetIndex; } catch { } - } - - // ---------- 图号菜单事件 ---------- - - private void MenuTuhao_New_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(_currentProjectId)) - { - MessageBox.Show(this, "请先在项目表中双击选择一个项目,再新建图号。", - "新建图号", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - string newTuhao = "新图号" + GetNextSeqNumber(TuhaoTableName, "图号", _currentProjectId); - int selectedIndex = GetSelectedRowIndex(this.advancedDataGridView9); - try - { - _isReloading = true; - SaveAllQuoteTablesIfDirty(false); - InsertTuhao(_currentProjectId, newTuhao, "", ""); - _xianghaoCache.Clear(); - _yuanjianCache.Clear(); - ReloadTuhaoByProject(_currentProjectId); - MoveLastRowBelowSelected(this.advancedDataGridView9, _tuhaoTable, selectedIndex, TuhaoTableName, _currentProjectId); - RecalcAllAfterReload(); - } - catch (Exception ex) - { - MessageBox.Show(this, "新建图号失败:\n" + ex.Message, - "新建图号", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _currentTuhao = newTuhao; - SelectRowByValue(this.advancedDataGridView9, "图号", newTuhao); - _isReloading = false; - ReloadXianghaoByTuhao(_currentProjectId, newTuhao); - } - } - - private void MenuTuhao_Delete_Click(object sender, EventArgs e) - { - var rows = GetAllSelectedRows(this.advancedDataGridView9); - if (rows == null || rows.Count == 0) - { - MessageBox.Show(this, "请先选择要删除的图号。", - "删除图号", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var tuhaos = new List(); - foreach (var r in rows) - { - string th = GetCellValueAsString(r, "图号"); - if (!string.IsNullOrWhiteSpace(th) && !tuhaos.Contains(th)) tuhaos.Add(th); - } - if (tuhaos.Count == 0) - { - MessageBox.Show(this, "选中行没有图号,无法删除。", - "删除图号", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - // ★ 收集选中图号行自己的框Handle - var frameHandles = new List(); - foreach (var r in rows) - { - var drv = r.DataBoundItem as DataRowView; - if (drv != null && drv.Row != null && drv.Row.Table.Columns.Contains("框Handle")) - { - object v = drv.Row["框Handle"]; - if (v != null && v != DBNull.Value) - { - string h = v.ToString().Trim(); - if (!string.IsNullOrWhiteSpace(h)) frameHandles.Add(h); - } - } - } - // ★ 收集每个图号下所有箱号和元件的框Handle(级联删框) - foreach (string tuhao in tuhaos) - { - CollectFrameHandlesForTuhao(_currentProjectId, tuhao, frameHandles); - } - Log("[MenuTuhao_Delete] 删除图号: " + string.Join(",", tuhaos) + " 收集到框Handle数: " + frameHandles.Count); - try - { - _isReloading = true; - SaveAllQuoteTablesIfDirty(false); - foreach (string tuhao in tuhaos) - { - DeleteTuhao(_currentProjectId, tuhao); - if (!string.IsNullOrEmpty(tuhao)) - { - _xianghaoCache.Remove(tuhao); - var keysToRemove = new List(); - foreach (var key in _yuanjianCache.Keys) - if (key.StartsWith(tuhao + "\n")) keysToRemove.Add(key); - foreach (var key in keysToRemove) _yuanjianCache.Remove(key); - } - } - RenumberTable(_currentProjectId, TuhaoTableName); - ReloadTuhaoByProject(_currentProjectId); - RecalcAllAfterReload(); - // ★ 删除所有收集到的框实体(去重) - var tuhaoDistinct = new HashSet(frameHandles); - foreach (string h in tuhaoDistinct) - { - Log("[MenuTuhao_Delete] 准备删除框Handle: " + h); - DeleteFrameByHandle(h); - } - Log("[MenuTuhao_Delete] 框实体删除完成,共 " + tuhaoDistinct.Count + " 个"); - // ★ 保存DWG,确保删框操作持久化 - SaveCurrentDwg(); - } - catch (Exception ex) - { - MessageBox.Show(this, "删除图号失败:\n" + ex.Message, - "删除图号", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally { _isReloading = false; } - } - - // ---------- 箱号菜单事件 ---------- - - private void MenuXianghao_New_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(_currentProjectId) || string.IsNullOrWhiteSpace(_currentTuhao)) - { - MessageBox.Show(this, "请先选择图号,再新建箱号。", - "新建箱号", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - string rememberTuhao = _currentTuhao; - int selectedIndex = GetSelectedRowIndex(this.advancedDataGridView4); - string newXh = "新箱号" + GetXianghaoCount(_currentProjectId, _currentTuhao); - try - { - _isReloading = true; - SaveAllQuoteTablesIfDirty(false); - InsertXianghao(_currentProjectId, _currentTuhao, newXh, "", ""); - if (!string.IsNullOrEmpty(rememberTuhao)) _xianghaoCache.Remove(rememberTuhao); - ReloadXianghaoByTuhao(_currentProjectId, _currentTuhao); - if (_xianghaoTable != null) - MoveLastRowBelowSelected(this.advancedDataGridView4, _xianghaoTable, selectedIndex, - "\"" + _xianghaoTable.TableName + "\"", _currentProjectId); - RecalcAllAfterReload(); - } - catch (Exception ex) - { - MessageBox.Show(this, "新建箱号失败:\n" + ex.Message, - "新建箱号", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _currentTuhao = rememberTuhao; - _currentXianghao = newXh; - SelectRowByValue(this.advancedDataGridView9, "图号", rememberTuhao); - SelectRowByValue(this.advancedDataGridView4, "箱号", newXh); - _isReloading = false; - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, newXh); - } - } - - private void MenuXianghao_Delete_Click(object sender, EventArgs e) - { - var rows = GetAllSelectedRows(this.advancedDataGridView4); - if (rows == null || rows.Count == 0) - { - MessageBox.Show(this, "请先选择要删除的箱号。", - "删除箱号", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var xhs = new List(); - foreach (var r in rows) - { - string xh = GetCellValueAsString(r, "箱号"); - if (!string.IsNullOrWhiteSpace(xh) && !xhs.Contains(xh)) xhs.Add(xh); - } - if (xhs.Count == 0) - { - MessageBox.Show(this, "选中行没有箱号,无法删除。", - "删除箱号", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - // ★ 收集选中箱号行自己的框Handle - var frameHandles = new List(); - foreach (var r in rows) - { - var drv = r.DataBoundItem as DataRowView; - if (drv != null && drv.Row != null && drv.Row.Table.Columns.Contains("框Handle")) - { - object v = drv.Row["框Handle"]; - if (v != null && v != DBNull.Value) - { - string h = v.ToString().Trim(); - if (!string.IsNullOrWhiteSpace(h)) frameHandles.Add(h); - } - } - } - // ★ 收集每个箱号下元件表的框Handle(级联删框) - foreach (string xh in xhs) - { - CollectFrameHandlesForXianghao(_currentProjectId, _currentTuhao, xh, frameHandles); - } - Log("[MenuXianghao_Delete] 删除箱号: " + string.Join(",", xhs) + " 图号=" + _currentTuhao + " 收集到框Handle数: " + frameHandles.Count); - string rememberTuhao = _currentTuhao; - try - { - _isReloading = true; - SaveAllQuoteTablesIfDirty(false); - foreach (string xh in xhs) - { - DeleteXianghao(_currentProjectId, _currentTuhao, xh); - string yjKey = _currentTuhao + "\n" + xh; - _yuanjianCache.Remove(yjKey); - } - string xhTbl = GetXianghaoTableByIndex(_currentProjectId, _currentTuhao); - if (!string.IsNullOrEmpty(xhTbl)) - RenumberTable(_currentProjectId, "\"" + xhTbl + "\""); - if (!string.IsNullOrEmpty(_currentTuhao)) _xianghaoCache.Remove(_currentTuhao); - Log("[MenuXianghao_Delete] 开始 ReloadXianghaoByTuhao..."); - ReloadXianghaoByTuhao(_currentProjectId, _currentTuhao); - Log("[MenuXianghao_Delete] ReloadXianghaoByTuhao 完成,开始删除框实体..."); - RecalcAllAfterReload(); - // ★ 删除所有收集到的框实体(去重,避免重复删除) - var distinctHandles = new HashSet(frameHandles); - foreach (string h in distinctHandles) - { - Log("[MenuXianghao_Delete] 准备删除框Handle: " + h); - DeleteFrameByHandle(h); - } - Log("[MenuXianghao_Delete] 框实体删除完成,共 " + distinctHandles.Count + " 个"); - // ★ 保存DWG,确保删框操作持久化 - SaveCurrentDwg(); - } - catch (Exception ex) - { - Log("[MenuXianghao_Delete] 异常: " + ex.Message + "\n" + ex.StackTrace); - MessageBox.Show(this, "删除箱号失败:\n" + ex.Message, - "删除箱号", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _currentTuhao = rememberTuhao; - SelectRowByValue(this.advancedDataGridView9, "图号", rememberTuhao); - _isReloading = false; - } - } - - // ---------- 元件菜单事件 ---------- - - private void MenuYuanjian_New_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(_currentProjectId) || - string.IsNullOrWhiteSpace(_currentTuhao) || - string.IsNullOrWhiteSpace(_currentXianghao)) - { - MessageBox.Show(this, "请先选择箱号,再新建元件。", - "新建元件", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - string rememberTuhao = _currentTuhao; - string rememberXianghao = _currentXianghao; - int selectedIndex = GetSelectedRowIndex(this.advancedDataGridView5); - string newName = "新元件" + GetYuanjianCount(_currentProjectId, _currentTuhao, _currentXianghao); - try - { - _isReloading = true; - SaveAllQuoteTablesIfDirty(false); - InsertYuanjian(_currentProjectId, _currentTuhao, _currentXianghao, newName); - string cacheKey = _currentTuhao + "\n" + _currentXianghao; - _yuanjianCache.Remove(cacheKey); - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - if (_yuanjianTable != null) - MoveLastRowBelowSelected(this.advancedDataGridView5, _yuanjianTable, selectedIndex, - "\"" + _yuanjianTable.TableName + "\"", _currentProjectId); - RecalcAllAfterReload(); - } - catch (Exception ex) - { - MessageBox.Show(this, "新建元件失败:\n" + ex.Message, - "新建元件", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _currentTuhao = rememberTuhao; - _currentXianghao = rememberXianghao; - SelectRowByValue(this.advancedDataGridView9, "图号", rememberTuhao); - SelectRowByValue(this.advancedDataGridView4, "箱号", rememberXianghao); - _isReloading = false; - } - } - - private void MenuYuanjian_Delete_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(_currentProjectId) || - string.IsNullOrWhiteSpace(_currentTuhao) || - string.IsNullOrWhiteSpace(_currentXianghao)) - { - MessageBox.Show(this, "请先选择箱号,再删除元件。", - "删除元件", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var rows = GetAllSelectedRows(this.advancedDataGridView5); - if (rows == null || rows.Count == 0) - { - MessageBox.Show(this, "请先选择要删除的元件。", - "删除元件", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var seqs = new List(); - var frameHandles = new List(); - foreach (var r in rows) - { - string seq = GetCellValueAsString(r, "序号"); - if (!string.IsNullOrWhiteSpace(seq) && !seqs.Contains(seq)) seqs.Add(seq); - // ★ 收集元件行的框Handle - var drv = r.DataBoundItem as DataRowView; - if (drv != null && drv.Row != null && drv.Row.Table.Columns.Contains("框Handle")) - { - object v = drv.Row["框Handle"]; - if (v != null && v != DBNull.Value) - { - string h = v.ToString().Trim(); - if (!string.IsNullOrWhiteSpace(h)) frameHandles.Add(h); - } - } - } - if (seqs.Count == 0) - { - MessageBox.Show(this, "选中行没有序号,无法删除。", - "删除元件", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - string rememberTuhao = _currentTuhao; - string rememberXianghao = _currentXianghao; - try - { - _isReloading = true; - SaveAllQuoteTablesIfDirty(false); - foreach (string seq in seqs) - DeleteYuanjian(_currentProjectId, _currentTuhao, _currentXianghao, seq); - string realTbl = GetYuanjianTableByIndex(_currentProjectId, _currentTuhao, _currentXianghao); - if (!string.IsNullOrEmpty(realTbl)) - RenumberTable(_currentProjectId, "\"" + realTbl + "\""); - string cacheKey = _currentTuhao + "\n" + _currentXianghao; - _yuanjianCache.Remove(cacheKey); - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - RecalcAllAfterReload(); - // ★ 删除所有收集到的框实体(去重) - foreach (string h in new HashSet(frameHandles)) DeleteFrameByHandle(h); - // ★ 保存DWG,确保删框操作持久化 - SaveCurrentDwg(); - } - catch (Exception ex) - { - MessageBox.Show(this, "删除元件失败:\n" + ex.Message, - "删除元件", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _currentTuhao = rememberTuhao; - _currentXianghao = rememberXianghao; - SelectRowByValue(this.advancedDataGridView9, "图号", rememberTuhao); - SelectRowByValue(this.advancedDataGridView4, "箱号", rememberXianghao); - _isReloading = false; - } - } - - // ============================================================ - // 合并元件:把选中的多行元件合并为一行 - // · 元件名称:所有非空名称直接拼接(去重,不加符号) - // · 规格:所有非空规格直接拼接(去重,不加符号) - // · 数量:保持为 1(合并后是一个元件,数量不变) - // · 其他列(单位/系数/价格):取第一行 - // · 删除被合并的其他行,重新编号,保存刷新 - // ============================================================ - private void MenuYuanjian_Merge_Click(object sender, EventArgs e) - { - if (string.IsNullOrWhiteSpace(_currentProjectId) || - string.IsNullOrWhiteSpace(_currentTuhao) || - string.IsNullOrWhiteSpace(_currentXianghao)) - { - MessageBox.Show(this, "请先选择箱号,再合并元件。", - "合并元件", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var rows = GetAllSelectedRows(this.advancedDataGridView5); - if (rows == null || rows.Count < 2) - { - MessageBox.Show(this, "请先选择至少两行要合并的元件(按住 Ctrl/Shift 多选)。", - "合并元件", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - // 按序号排序(保证合并顺序与表格顺序一致) - rows.Sort((a, b) => - { - int ia = 0, ib = 0; - int.TryParse(GetCellValueAsString(a, "序号"), out ia); - int.TryParse(GetCellValueAsString(b, "序号"), out ib); - return ia.CompareTo(ib); - }); - - // 收集要合并的内容(直接拼接,不加任何符号) - var names = new List(); - var specs = new List(); - foreach (var r in rows) - { - string nm = GetCellValueAsString(r, "元件名称"); - if (!string.IsNullOrWhiteSpace(nm) && !names.Contains(nm)) names.Add(nm); - string sp = GetCellValueAsString(r, "规格"); - if (!string.IsNullOrWhiteSpace(sp) && !specs.Contains(sp)) specs.Add(sp); - } - - string rememberTuhao = _currentTuhao; - string rememberXianghao = _currentXianghao; - try - { - _isReloading = true; - SaveAllQuoteTablesIfDirty(false); - - if (_yuanjianTable == null || _yuanjianTable.Rows.Count == 0) - { - MessageBox.Show(this, "元件表为空,无法合并。", - "合并元件", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - - // 取出选中行对应的 DataRow - var dataRows = new List(); - foreach (var dgvRow in rows) - { - var drv = dgvRow.DataBoundItem as DataRowView; - if (drv != null && drv.Row != null) dataRows.Add(drv.Row); - } - if (dataRows.Count < 2) - { - MessageBox.Show(this, "无法获取选中行的数据,请重试。", - "合并元件", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - - // 第一行作为合并目标,更新名称/规格(直接拼接,不加符号) - // 数量保持为 1(合并后是一个元件) - DataRow target = dataRows[0]; - if (_yuanjianTable.Columns.Contains("元件名称")) - target["元件名称"] = string.Join("", names); - if (_yuanjianTable.Columns.Contains("规格")) - target["规格"] = string.Join("", specs); - if (_yuanjianTable.Columns.Contains("数量")) - target["数量"] = "1"; - - // ★ 收集被合并行(第2行起)的框Handle,合并后删除这些框 - var mergedFrameHandles = new List(); - if (_yuanjianTable.Columns.Contains("框Handle")) - { - for (int i = 1; i < dataRows.Count; i++) - { - object v = dataRows[i]["框Handle"]; - if (v != null && v != DBNull.Value) - { - string h = v.ToString().Trim(); - if (!string.IsNullOrWhiteSpace(h)) mergedFrameHandles.Add(h); - } - } - } - - // 删除其他被合并的行 - for (int i = 1; i < dataRows.Count; i++) - { - dataRows[i].Delete(); - } - - // 保存到数据库 - string realTbl = GetYuanjianTableByIndex(_currentProjectId, _currentTuhao, _currentXianghao); - if (!string.IsNullOrEmpty(realTbl)) - { - SaveTableToDatabase(_yuanjianTable, _currentProjectId, - "\"" + realTbl + "\"", null, null, true); - _yuanjianTable.AcceptChanges(); - RenumberTable(_currentProjectId, "\"" + realTbl + "\""); - } - - // ★ 删除被合并行的框实体 - foreach (string h in mergedFrameHandles) DeleteFrameByHandle(h); - // ★ 保存DWG,确保删框操作持久化 - SaveCurrentDwg(); - - // 刷新缓存与表格 - string cacheKey = _currentTuhao + "\n" + _currentXianghao; - _yuanjianCache.Remove(cacheKey); - ReloadYuanjianByXianghao(_currentProjectId, _currentTuhao, _currentXianghao); - RecalcAllAfterReload(); - } - catch (Exception ex) - { - MessageBox.Show(this, "合并元件失败:\n" + ex.Message, - "合并元件", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - _currentTuhao = rememberTuhao; - _currentXianghao = rememberXianghao; - SelectRowByValue(this.advancedDataGridView9, "图号", rememberTuhao); - SelectRowByValue(this.advancedDataGridView4, "箱号", rememberXianghao); - _isReloading = false; - } - } - - // ============================================================ - // 工具栏:新建项目 / 删除项目 / 导出数据 - // ============================================================ - - private void toolStripButton5_Click(object sender, EventArgs e) - { - // 用自定义对话框收集项目信息字段(无主项目的"新建项目"窗体可用) - var fields = ShowNewProjectDialog(); - if (fields == null) return; - try - { - int affected = InsertProjectToDatabase(fields); - if (affected <= 0) - { - MessageBox.Show(this, "未写入任何字段,请检查输入。", - "新建项目", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - ReloadProjectsFromDatabase(); - ApplyPriceFormat(this.advancedDataGridView6, _项目小数位文本); - } - catch (Exception ex) - { - MessageBox.Show(this, "保存项目失败:\n" + ex.Message, - "新建项目", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - /// 弹出新建项目窗口,收集项目信息 + 价格格式化配置。 - private Dictionary ShowNewProjectDialog() - { - string dbPath = GetDbFullPath(ProjectsDbPath); - using (var dlg = new 新建项目(dbPath, ProjectsTableName)) - { - if (dlg.ShowDialog(this) != DialogResult.OK) return null; - return dlg.GetInputValues(); - } - } - - private void toolStripButton6_Click(object sender, EventArgs e) - { - DataGridViewRow row = GetFirstSelectedProjectRow(); - if (row == null) - { - MessageBox.Show(this, "请先在项目表格中选择要删除的项目。", - "删除项目", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - string projectId = GetCellValueAsString(row, "项目编号"); - if (string.IsNullOrWhiteSpace(projectId)) - { - MessageBox.Show(this, "选中行没有“项目编号”,无法定位要删除的数据库记录。", - "删除项目", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - DialogResult dr = MessageBox.Show(this, - "确定要删除项目编号为 “" + projectId + "” 的项目吗?\n" + - "该项目下的所有图号/箱号/元件数据也会一并删除!\n此操作不可恢复。", - "删除项目", MessageBoxButtons.YesNo, MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (dr != DialogResult.Yes) return; - try - { - int affected = DeleteProjectFromDatabase(projectId); - CascadeDeleteByProject(projectId); - _currentProjectId = ""; - _currentTuhao = ""; - _currentXianghao = ""; - _xianghaoCache.Clear(); - _yuanjianCache.Clear(); - _tuhaoTable = null; - ReloadProjectsFromDatabase(); - ReloadTuhaoByProject(""); - } - catch (Exception ex) - { - MessageBox.Show(this, "删除项目失败:\n" + ex.Message, - "删除项目", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - // ---------- 项目表查找(button28)---------- - - private void button28_Click(object sender, EventArgs e) - { - string field = this.comboBox2.Text == null ? "" : this.comboBox2.Text.Trim(); - string colName = MapSearchFieldToColumn(field); - if (string.IsNullOrEmpty(colName)) - { - MessageBox.Show(this, - "请先在搜索条件下拉框中选择有效的搜索字段(项目名称 / 项目编号 / 客户名称)。", - "查找", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - string keyword = this.textBox1.Text == null ? "" : this.textBox1.Text.Trim(); - DataTable table = this.advancedDataGridView6.DataSource as DataTable; - if (table == null) - { - MessageBox.Show(this, "项目表暂无数据,无法搜索。", "查找", - MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - if (keyword.Length == 0) - { - if (table.DefaultView.RowFilter.Length > 0) table.DefaultView.RowFilter = ""; - return; - } - string escaped = EscapeLikeValue(keyword); - try { table.DefaultView.RowFilter = "[" + colName + "] LIKE '%" + escaped + "%'"; } - catch (System.Data.SyntaxErrorException ex) - { - MessageBox.Show(this, "搜索条件解析失败,请检查输入的关键词。\n详情:" + ex.Message, - "查找", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - if (table.DefaultView.Count == 0) - { - MessageBox.Show(this, "没有找到 " + field + " 包含 “" + keyword + "” 的项目。", - "查找", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - - private static string MapSearchFieldToColumn(string field) - { - if (string.IsNullOrEmpty(field)) return ""; - string f = field.Replace(" ", "").Trim(); - if (f == "项目名称" || f == "名称") return "项目名称"; - if (f == "项目编号" || f == "编号") return "项目编号"; - if (f == "客户名称" || f == "客户") return "客户名称"; - return ""; - } - - private static string EscapeLikeValue(string value) - { - if (string.IsNullOrEmpty(value)) return ""; - var sb = new System.Text.StringBuilder(value.Length * 2); - foreach (char c in value) - { - if (c == '\'') sb.Append("''"); - else if (c == '%' || c == '_' || c == '[' || c == ']') sb.Append('[').Append(c).Append(']'); - else sb.Append(c); - } - return sb.ToString(); - } - - // ---------- 导出数据(toolStripButton1)---------- - - private void toolStripButton1_Click(object sender, EventArgs e) - { - string pid = ""; - try - { - var projects = ReadAllProjectsFromDatabase(); - if (projects == null || projects.Count == 0) - { - MessageBox.Show(this, "项目列表为空,无项目可导出。", - "导出项目", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - if (projects.Count == 1) - { - pid = projects[0].ContainsKey("项目编号") ? (projects[0]["项目编号"] ?? "").ToString() : ""; - } - else - { - pid = PickProjectDialog(projects); - if (string.IsNullOrWhiteSpace(pid)) return; - } - if (string.IsNullOrWhiteSpace(pid)) - { - MessageBox.Show(this, "未能确定要导出的项目编号。", - "导出项目", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - - // 先保存当前项目的所有改动 - SaveAllToDatabaseSilent(); - - string dbPath = GetQuoteDbPath(pid); - if (!File.Exists(dbPath)) - { - MessageBox.Show(this, "项目数据库文件不存在:\n" + dbPath, - "导出项目", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - var meta = ReadProjectMetaData(pid); - if (meta == null) - { - MessageBox.Show(this, "项目元数据读取失败,项目编号:" + pid, - "导出项目", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - string projName = meta.ContainsKey("项目名称") ? (meta["项目名称"] ?? "").ToString() : ""; - string safeName = MakeSafeFileName(projName + "_" + pid); - string defaultFileName = safeName + "_" + DateTime.Now.ToString("yyyyMMdd") + ".zip"; - - string initialDir = ""; - try - { - string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - if (!string.IsNullOrEmpty(desktop) && Directory.Exists(desktop)) initialDir = desktop; - } - catch { } - if (string.IsNullOrEmpty(initialDir)) - { - try - { - string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - if (!string.IsNullOrEmpty(docs) && Directory.Exists(docs)) initialDir = docs; - } - catch { } - } - - // ★ 打包到临时 zip(不弹保存对话框,直接联动主窗口) - string tempZip = Path.Combine(Path.GetTempPath(), "cadcj_导出_" + Guid.NewGuid().ToString("N") + ".zip"); - string tempDir = Path.Combine(Path.GetTempPath(), "cadcj_导出_" + Guid.NewGuid().ToString("N")); - Directory.CreateDirectory(tempDir); - try - { - // 复制 db(用 SQL ATTACH 绕开文件锁,兜底 File.Copy) - string dstDb = Path.Combine(tempDir, "项目" + MakeSafeFileName(pid) + ".db"); - BackupSQLiteDb(dbPath, dstDb); - - // 写 meta.json - var sb = new System.Text.StringBuilder(); - sb.Append("{\n \"项目编号\": \""); - sb.Append(EscapeJsonString(pid)); - sb.Append("\",\n \"字段\": {"); - bool firstKv = true; - foreach (var kv in meta) - { - if (firstKv) firstKv = false; else sb.Append(","); - sb.Append("\n \""); - sb.Append(EscapeJsonString(kv.Key)); - sb.Append("\": \""); - sb.Append(EscapeJsonString((kv.Value ?? "").ToString())); - sb.Append("\""); - } - sb.Append("\n }\n}"); - File.WriteAllText(Path.Combine(tempDir, "meta.json"), sb.ToString(), new System.Text.UTF8Encoding(false)); - - // 打包 zip - if (File.Exists(tempZip)) File.Delete(tempZip); - System.IO.Compression.ZipFile.CreateFromDirectory(tempDir, tempZip); - - // ★ 查找主窗口 exe(cadcj 目录的上级目录) - string mainExePath = null; - try - { - string pluginDir = Path.GetDirectoryName( - new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath); - string parentDir = Path.GetFullPath(Path.Combine(pluginDir, "..")); - string candidate = Path.Combine(parentDir, "成套报价软件.exe"); - if (File.Exists(candidate)) mainExePath = candidate; - } - catch { } - - if (!string.IsNullOrEmpty(mainExePath)) - { - // ★ 启动主窗口并传递 zip 路径,主窗口自动导入并打开项目 - var psi = new System.Diagnostics.ProcessStartInfo - { - FileName = mainExePath, - Arguments = "\"" + tempZip + "\"", - UseShellExecute = true, - }; - System.Diagnostics.Process.Start(psi); - MessageBox.Show(this, - "已发送到主窗口!\n\n项目:" + projName + " (" + pid + ")\n主窗口将自动导入并打开该项目。", - "导出项目", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - else - { - // ★ 找不到主窗口 exe,退回到保存对话框模式 - using (var sfd = new SaveFileDialog - { - Title = "导出项目", - Filter = "项目包 (*.zip)|*.zip", - FileName = defaultFileName, - RestoreDirectory = true, - }) - { - if (!string.IsNullOrEmpty(initialDir)) sfd.InitialDirectory = initialDir; - if (sfd.ShowDialog(this) != DialogResult.OK) return; - string zipPath = sfd.FileName; - File.Copy(tempZip, zipPath, true); - MessageBox.Show(this, - "导出成功!\n\n项目:" + projName + " (" + pid + ")\n文件:" + zipPath + - "\n\n(未找到主窗口程序,已保存为zip文件,可手动导入)", - "导出项目", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - } - finally - { - try { Directory.Delete(tempDir, true); } catch { } - // 临时 zip 不立即删除(主窗口可能正在读取) - } - } - catch (Exception ex) - { - MessageBox.Show(this, "导出失败:\n" + ex.Message, - "导出项目", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - /// 用 SQL ATTACH 复制 SQLite 库,兜底 File.Copy。 - private void BackupSQLiteDb(string srcDbPath, string dstDbPath) - { - try { if (File.Exists(dstDbPath)) File.Delete(dstDbPath); } catch { } - Exception sqlErr = null; - try - { - using (var srcConn = new System.Data.SQLite.SQLiteConnection( - "Data Source=" + srcDbPath + ";Version=3;Pooling=False;ReadOnly=True;")) - { - srcConn.Open(); - using (var att = new System.Data.SQLite.SQLiteCommand("ATTACH DATABASE @path AS dst;", srcConn)) - { - att.Parameters.AddWithValue("@path", dstDbPath); - att.ExecuteNonQuery(); - } - string selAll = "SELECT name, sql FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';"; - var tables = new List>(); - using (var sel = new System.Data.SQLite.SQLiteCommand(selAll, srcConn)) - using (var rd = sel.ExecuteReader()) - { - while (rd.Read()) - { - string tn = rd.IsDBNull(0) ? "" : rd.GetString(0); - string sql = rd.IsDBNull(1) ? "" : rd.GetString(1); - if (!string.IsNullOrEmpty(tn)) tables.Add(new KeyValuePair(tn, sql)); - } - } - foreach (var kv in tables) - { - string tn = kv.Key; - string sql = kv.Value; - if (!string.IsNullOrEmpty(sql)) - { - string dstSql = sql.Replace("CREATE TABLE " + tn, "CREATE TABLE dst." + tn); - using (var c = new System.Data.SQLite.SQLiteCommand(dstSql, srcConn)) c.ExecuteNonQuery(); - } - using (var c = new System.Data.SQLite.SQLiteCommand( - "INSERT INTO dst.\"" + tn + "\" SELECT * FROM main.\"" + tn + "\";", srcConn)) - c.ExecuteNonQuery(); - } - using (var det = new System.Data.SQLite.SQLiteCommand("DETACH DATABASE dst;", srcConn)) - det.ExecuteNonQuery(); - return; - } - } - catch (Exception ex) { sqlErr = ex; } - // 兜底:File.Copy - try { System.Data.SQLite.SQLiteConnection.ClearAllPools(); } catch { } - try { if (File.Exists(dstDbPath)) File.Delete(dstDbPath); } catch { } - File.Copy(srcDbPath, dstDbPath, true); - } - - /// 弹出一个简单对话框,让用户从项目列表中选一个项目,返回项目编号。 - private string PickProjectDialog(List> projects) - { - try - { - using (var dlg = new Form - { - Text = "选择要导出的项目", - StartPosition = FormStartPosition.CenterParent, - FormBorderStyle = FormBorderStyle.FixedDialog, - MaximizeBox = false, - MinimizeBox = false, - ClientSize = new Size(520, 360), - }) - { - var lbl = new Label - { - Text = "请选择要导出的项目:", - Location = new Point(12, 12), - Size = new Size(496, 23), - TextAlign = ContentAlignment.MiddleLeft, - }; - dlg.Controls.Add(lbl); - var lv = new ListView - { - Location = new Point(12, 40), - Size = new Size(496, 260), - View = View.Details, - FullRowSelect = true, - MultiSelect = false, - HideSelection = false, - }; - lv.Columns.Add("项目编号", 100); - lv.Columns.Add("项目名称", 160); - lv.Columns.Add("客户名称", 130); - lv.Columns.Add("项目日期", 90); - foreach (var p in projects) - { - string bh = p.ContainsKey("项目编号") ? (p["项目编号"] ?? "").ToString() : ""; - string mc = p.ContainsKey("项目名称") ? (p["项目名称"] ?? "").ToString() : ""; - string kh = p.ContainsKey("客户名称") ? (p["客户名称"] ?? "").ToString() : ""; - string rq = p.ContainsKey("项目日期") ? (p["项目日期"] ?? "").ToString() : ""; - var item = new ListViewItem(bh); - item.SubItems.Add(mc); - item.SubItems.Add(kh); - item.SubItems.Add(rq); - lv.Items.Add(item); - } - if (lv.Items.Count > 0) lv.Items[0].Selected = true; - dlg.Controls.Add(lv); - var btnOk = new Button - { - Text = "导出选中项", - DialogResult = DialogResult.OK, - Location = new Point(330, 310), - Size = new Size(85, 28), - }; - dlg.Controls.Add(btnOk); - var btnCancel = new Button - { - Text = "取消", - DialogResult = DialogResult.Cancel, - Location = new Point(425, 310), - Size = new Size(75, 28), - }; - dlg.Controls.Add(btnCancel); - dlg.AcceptButton = btnOk; - dlg.CancelButton = btnCancel; - if (dlg.ShowDialog(this) == DialogResult.OK && lv.SelectedItems.Count > 0) - return lv.SelectedItems[0].Text; - return ""; - } - } - catch { return ""; } - } - - // ============================================================ - // 窗体关闭:回写当前项目的所有改动 - // ============================================================ - - private void Form3_Disposed(object sender, EventArgs e) - { - try { SaveAllToDatabaseSilent(); } - catch { } - - // ★ 取消 ObjectErased 和 DocumentActivated 订阅,避免事件泄漏 - try - { - Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.DocumentActivated -= - DocumentManager_DocumentActivated; - if (_erasedSubscribedDb != null) - { - _erasedSubscribedDb.ObjectErased -= Database_ObjectErased; - _erasedSubscribedDb = null; - } - var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; - if (doc != null && doc.Database != null) - { - doc.Database.ObjectErased -= Database_ObjectErased; - } - } - catch { } - } - } -} diff --git a/cadbt/cadbt/cadcj/Form3.dependencies.txt b/cadbt/cadbt/cadcj/Form3.dependencies.txt deleted file mode 100644 index 61a6cf0..0000000 --- a/cadbt/cadbt/cadcj/Form3.dependencies.txt +++ /dev/null @@ -1,34 +0,0 @@ -// ============================================================ -// Form3 依赖清单 -// 此文件记录窗体所使用的控件及其运行时依赖。 -// ============================================================ - -// NuGet 包依赖: -// ---------------- -// System.Data.SQLite.Core (版本 1.0.119.0) -// 安装命令: dotnet add package System.Data.SQLite.Core --version 1.0.119.0 -// 或在 Visual Studio 中: 右键项目 → 管理 NuGet 包 → 搜索 System.Data.SQLite.Core - -// DLL 文件依赖: -// ---------------- -// 来自 未知: -// - AdvancedDataGridView.dll (托管 DLL) -// 来自 System.Data.SQLite.Core: -// - System.Data.SQLite.dll (托管 DLL) - -// 编译说明: -// ---------------- -// 1. 确保 NuGet 包已安装到项目 -// 2. 编译时使用正确的 CPU 架构(x64 或 x86) -// 3. 运行时确保所有 DLL 文件与 exe 在同一目录 -// 4. ★ 推荐用同目录下的 build.bat 一键编译(已自动配置 response file 和 manifest) -// manifest 的 DPI 策略与设计器一致(dpiAware=unaware),保证所见即所得 - -// 编译命令示例(x64): -// csc /target:winexe /platform:x64 /out:Form3.exe -// /win32manifest:app.manifest -// /r:System.Windows.Forms.dll /r:System.Drawing.dll -// /r:"AdvancedDataGridView.dll" -// /r:"System.Data.SQLite.dll" -// Form3.cs Form3.ui.cs - diff --git a/cadbt/cadbt/cadcj/Form3.ui.cs b/cadbt/cadbt/cadcj/Form3.ui.cs deleted file mode 100644 index 25488f6..0000000 --- a/cadbt/cadbt/cadcj/Form3.ui.cs +++ /dev/null @@ -1,1410 +0,0 @@ -namespace MyApp -{ - public partial class Form3 : System.Windows.Forms.Form - { - /// 必需的设计器变量。 - private System.ComponentModel.IContainer components = null; - - /// 清理正在使用的资源。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows 窗体设计器生成的代码 - - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - - this.tabControl2 = new System.Windows.Forms.TabControl(); - this.tabPage3 = new System.Windows.Forms.TabPage(); - this.advancedDataGridView6 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView6)).BeginInit(); - this.panel1 = new System.Windows.Forms.Panel(); - this.button28 = new System.Windows.Forms.Button(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.comboBox2 = new System.Windows.Forms.ComboBox(); - this.tabPage4 = new System.Windows.Forms.TabPage(); - this.splitContainer2 = new System.Windows.Forms.SplitContainer(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); - this.advancedDataGridView9 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView9)).BeginInit(); - this.splitContainer3 = new System.Windows.Forms.SplitContainer(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); - this.advancedDataGridView4 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView4)).BeginInit(); - this.advancedDataGridView5 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView5)).BeginInit(); - this.toolStrip1 = new System.Windows.Forms.ToolStrip(); - this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton5 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton6 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton7 = new System.Windows.Forms.ToolStripButton(); - this.SuspendLayout(); - // - // tabControl2 - // - this.tabControl2.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabControl2.Alignment = System.Windows.Forms.TabAlignment.Top; - this.tabControl2.Appearance = System.Windows.Forms.TabAppearance.Normal; - this.tabControl2.DrawMode = System.Windows.Forms.TabDrawMode.Normal; - this.tabControl2.HotTrack = false; - this.tabControl2.ItemSize = new System.Drawing.Size(60, 21); - this.tabControl2.Multiline = false; - this.tabControl2.Padding = new System.Drawing.Point(6, 3); - this.tabControl2.RightToLeftLayout = false; - this.tabControl2.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; - this.tabControl2.ShowToolTips = false; - this.tabControl2.Enabled = true; - this.tabControl2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.tabControl2.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabControl2.MaximumSize = new System.Drawing.Size(0, 0); - this.tabControl2.MinimumSize = new System.Drawing.Size(0, 0); - this.tabControl2.TabIndex = 0; - this.tabControl2.TabStop = true; - this.tabControl2.Name = "tabControl2"; - - // - // tabPage3 - // - this.tabPage3.BackColor = System.Drawing.SystemColors.Control; - this.tabPage3.UseVisualStyleBackColor = true; - this.tabPage3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.tabPage3.AutoScroll = false; - this.tabPage3.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.tabPage3.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.tabPage3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.tabPage3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.tabPage3.ForeColor = System.Drawing.SystemColors.ControlText; - this.tabPage3.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage3.Padding = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage3.Size = new System.Drawing.Size(479, 717); - this.tabPage3.Text = "项目"; - this.tabPage3.Name = "tabPage3"; - - // - // advancedDataGridView6 - // - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView6.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView6.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView6.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView6.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView6.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView6.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView6.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView6.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView6.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView6.EnableExcelStyleSelection = true; - this.advancedDataGridView6.EnableCellPaste = false; - this.advancedDataGridView6.AllowUserToAddRows = false; - this.advancedDataGridView6.AllowUserToDeleteRows = true; - this.advancedDataGridView6.AllowUserToOrderColumns = false; - this.advancedDataGridView6.AllowUserToResizeColumns = true; - this.advancedDataGridView6.AllowUserToResizeRows = false; - this.advancedDataGridView6.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView6.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView6.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView6.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView6.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView6.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView6.ColumnHeadersHeight = 25; - this.advancedDataGridView6.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView6.ColumnHeadersVisible = true; - this.advancedDataGridView6.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystrokeOrF2; - this.advancedDataGridView6.EnableHeadersVisualStyles = false; - this.advancedDataGridView6.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView6.MultiSelect = true; - this.advancedDataGridView6.ReadOnly = true; - this.advancedDataGridView6.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView6.RowHeadersVisible = true; - this.advancedDataGridView6.RowHeadersWidth = 41; - this.advancedDataGridView6.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView6.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView6.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView6.ShowCellErrors = true; - this.advancedDataGridView6.ShowCellToolTips = true; - this.advancedDataGridView6.ShowEditingIcon = true; - this.advancedDataGridView6.ShowRowErrors = true; - this.advancedDataGridView6.StandardTab = false; - this.advancedDataGridView6.VirtualMode = false; - this.advancedDataGridView6.Enabled = true; - this.advancedDataGridView6.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView6.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView6.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView6.TabIndex = 1; - this.advancedDataGridView6.TabStop = true; - this.advancedDataGridView6.Name = "advancedDataGridView6"; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[0].Name = "Column2"; - this.advancedDataGridView6.Columns[0].HeaderText = "项目编号"; - this.advancedDataGridView6.Columns[0].Width = 100; - this.advancedDataGridView6.Columns[0].Visible = true; - this.advancedDataGridView6.Columns[0].ReadOnly = true; - this.advancedDataGridView6.Columns[0].Frozen = false; - this.advancedDataGridView6.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[0].DataPropertyName = "项目编号"; - this.advancedDataGridView6.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[1].Name = "Column3"; - this.advancedDataGridView6.Columns[1].HeaderText = "项目名称"; - this.advancedDataGridView6.Columns[1].Width = 100; - this.advancedDataGridView6.Columns[1].Visible = true; - this.advancedDataGridView6.Columns[1].ReadOnly = true; - this.advancedDataGridView6.Columns[1].Frozen = false; - this.advancedDataGridView6.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[1].DataPropertyName = "项目名称"; - this.advancedDataGridView6.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[2].Name = ""; - this.advancedDataGridView6.Columns[2].HeaderText = "客户名称"; - this.advancedDataGridView6.Columns[2].Width = 100; - this.advancedDataGridView6.Columns[2].Visible = true; - this.advancedDataGridView6.Columns[2].ReadOnly = true; - this.advancedDataGridView6.Columns[2].Frozen = false; - this.advancedDataGridView6.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[2].DataPropertyName = "客户名称"; - this.advancedDataGridView6.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[3].Name = ""; - this.advancedDataGridView6.Columns[3].HeaderText = "客户地址"; - this.advancedDataGridView6.Columns[3].Width = 100; - this.advancedDataGridView6.Columns[3].Visible = true; - this.advancedDataGridView6.Columns[3].ReadOnly = true; - this.advancedDataGridView6.Columns[3].Frozen = false; - this.advancedDataGridView6.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[3].DataPropertyName = "客户地址"; - this.advancedDataGridView6.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[4].Name = ""; - this.advancedDataGridView6.Columns[4].HeaderText = "联系人"; - this.advancedDataGridView6.Columns[4].Width = 100; - this.advancedDataGridView6.Columns[4].Visible = true; - this.advancedDataGridView6.Columns[4].ReadOnly = true; - this.advancedDataGridView6.Columns[4].Frozen = false; - this.advancedDataGridView6.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[4].DataPropertyName = "联系人"; - this.advancedDataGridView6.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[5].Name = ""; - this.advancedDataGridView6.Columns[5].HeaderText = "联系电话"; - this.advancedDataGridView6.Columns[5].Width = 100; - this.advancedDataGridView6.Columns[5].Visible = true; - this.advancedDataGridView6.Columns[5].ReadOnly = true; - this.advancedDataGridView6.Columns[5].Frozen = false; - this.advancedDataGridView6.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[5].DataPropertyName = "联系电话"; - this.advancedDataGridView6.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[6].Name = ""; - this.advancedDataGridView6.Columns[6].HeaderText = "项目日期"; - this.advancedDataGridView6.Columns[6].Width = 100; - this.advancedDataGridView6.Columns[6].Visible = true; - this.advancedDataGridView6.Columns[6].ReadOnly = true; - this.advancedDataGridView6.Columns[6].Frozen = false; - this.advancedDataGridView6.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[6].DataPropertyName = "项目日期"; - this.advancedDataGridView6.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[7].Name = ""; - this.advancedDataGridView6.Columns[7].HeaderText = "箱柜台数"; - this.advancedDataGridView6.Columns[7].Width = 100; - this.advancedDataGridView6.Columns[7].Visible = true; - this.advancedDataGridView6.Columns[7].ReadOnly = true; - this.advancedDataGridView6.Columns[7].Frozen = false; - this.advancedDataGridView6.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[7].DataPropertyName = "箱柜台数"; - this.advancedDataGridView6.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[8].Name = ""; - this.advancedDataGridView6.Columns[8].HeaderText = "成本总价"; - this.advancedDataGridView6.Columns[8].Width = 100; - this.advancedDataGridView6.Columns[8].Visible = true; - this.advancedDataGridView6.Columns[8].ReadOnly = true; - this.advancedDataGridView6.Columns[8].Frozen = false; - this.advancedDataGridView6.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[8].DataPropertyName = "成本总价"; - this.advancedDataGridView6.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[9].Name = ""; - this.advancedDataGridView6.Columns[9].HeaderText = "报出总价"; - this.advancedDataGridView6.Columns[9].Width = 100; - this.advancedDataGridView6.Columns[9].Visible = true; - this.advancedDataGridView6.Columns[9].ReadOnly = true; - this.advancedDataGridView6.Columns[9].Frozen = false; - this.advancedDataGridView6.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[9].DataPropertyName = "报出总价"; - this.advancedDataGridView6.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[10].Name = ""; - this.advancedDataGridView6.Columns[10].HeaderText = "利润"; - this.advancedDataGridView6.Columns[10].Width = 100; - this.advancedDataGridView6.Columns[10].Visible = true; - this.advancedDataGridView6.Columns[10].ReadOnly = true; - this.advancedDataGridView6.Columns[10].Frozen = false; - this.advancedDataGridView6.Columns[10].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[10].DataPropertyName = "利润"; - this.advancedDataGridView6.Columns[10].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[11].Name = ""; - this.advancedDataGridView6.Columns[11].HeaderText = "利润率"; - this.advancedDataGridView6.Columns[11].Width = 100; - this.advancedDataGridView6.Columns[11].Visible = true; - this.advancedDataGridView6.Columns[11].ReadOnly = true; - this.advancedDataGridView6.Columns[11].Frozen = false; - this.advancedDataGridView6.Columns[11].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[11].DataPropertyName = "利润率"; - this.advancedDataGridView6.Columns[11].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[12].Name = ""; - this.advancedDataGridView6.Columns[12].HeaderText = "备注"; - this.advancedDataGridView6.Columns[12].Width = 100; - this.advancedDataGridView6.Columns[12].Visible = true; - this.advancedDataGridView6.Columns[12].ReadOnly = true; - this.advancedDataGridView6.Columns[12].Frozen = false; - this.advancedDataGridView6.Columns[12].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[12].DataPropertyName = "备注"; - this.advancedDataGridView6.Columns[12].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // panel1 - // - this.panel1.Dock = System.Windows.Forms.DockStyle.Top; - this.panel1.AutoSize = false; - this.panel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.panel1.TabStop = false; - this.panel1.AutoScroll = false; - this.panel1.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.panel1.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.panel1.BackColor = System.Drawing.SystemColors.Control; - this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.panel1.Enabled = true; - this.panel1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.panel1.ForeColor = System.Drawing.SystemColors.ControlText; - this.panel1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.panel1.MaximumSize = new System.Drawing.Size(0, 0); - this.panel1.MinimumSize = new System.Drawing.Size(0, 0); - this.panel1.TabIndex = 0; - this.panel1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.panel1.Size = new System.Drawing.Size(473, 28); - this.panel1.Location = new System.Drawing.Point(3, 3); - this.panel1.Name = "panel1"; - - // - // button28 - // - this.button28.Dock = System.Windows.Forms.DockStyle.None; - this.button28.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.button28.DialogResult = System.Windows.Forms.DialogResult.None; - this.button28.AutoEllipsis = false; - this.button28.AutoSize = false; - this.button28.BackColor = System.Drawing.SystemColors.Control; - this.button28.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.button28.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.button28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.button28.TextImageRelation = System.Windows.Forms.TextImageRelation.Overlay; - this.button28.UseMnemonic = true; - this.button28.UseCompatibleTextRendering = false; - this.button28.UseVisualStyleBackColor = true; - this.button28.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.button28.Enabled = true; - this.button28.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.button28.ForeColor = System.Drawing.SystemColors.ControlText; - this.button28.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.button28.MaximumSize = new System.Drawing.Size(0, 0); - this.button28.MinimumSize = new System.Drawing.Size(0, 0); - this.button28.TabIndex = 2; - this.button28.TabStop = true; - this.button28.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.button28.Size = new System.Drawing.Size(75, 23); - this.button28.Location = new System.Drawing.Point(335, 2); - this.button28.Text = "查找"; - this.button28.Name = "button28"; - - // - // textBox1 - // - this.textBox1.Dock = System.Windows.Forms.DockStyle.None; - this.textBox1.AcceptsReturn = false; - this.textBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.textBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.textBox1.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.textBox1.Multiline = false; - this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.textBox1.UseSystemPasswordChar = false; - this.textBox1.AcceptsTab = false; - this.textBox1.ShortcutsEnabled = true; - this.textBox1.BackColor = System.Drawing.SystemColors.Window; - this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.textBox1.ForeColor = System.Drawing.SystemColors.WindowText; - this.textBox1.HideSelection = true; - this.textBox1.MaxLength = 32767; - this.textBox1.ReadOnly = false; - this.textBox1.WordWrap = true; - this.textBox1.Enabled = true; - this.textBox1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.textBox1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.textBox1.MaximumSize = new System.Drawing.Size(0, 0); - this.textBox1.MinimumSize = new System.Drawing.Size(0, 0); - this.textBox1.TabIndex = 1; - this.textBox1.TabStop = true; - this.textBox1.Size = new System.Drawing.Size(210, 21); - this.textBox1.Location = new System.Drawing.Point(119, 4); - this.textBox1.Name = "textBox1"; - - // - // comboBox2 - // - this.comboBox2.Dock = System.Windows.Forms.DockStyle.None; - this.comboBox2.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.comboBox2.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.comboBox2.BackColor = System.Drawing.SystemColors.Window; - this.comboBox2.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.comboBox2.DropDownWidth = 108; - this.comboBox2.DropDownHeight = 106; - this.comboBox2.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.comboBox2.ForeColor = System.Drawing.SystemColors.WindowText; - this.comboBox2.IntegralHeight = true; - this.comboBox2.ItemHeight = 12; - this.comboBox2.MaxDropDownItems = 8; - this.comboBox2.MaximumSize = new System.Drawing.Size(0, 0); - this.comboBox2.MinimumSize = new System.Drawing.Size(0, 0); - this.comboBox2.MaxLength = 0; - this.comboBox2.Sorted = false; - this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.comboBox2.FormattingEnabled = false; - this.comboBox2.Enabled = true; - this.comboBox2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.comboBox2.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.comboBox2.TabIndex = 0; - this.comboBox2.TabStop = true; - this.comboBox2.Size = new System.Drawing.Size(108, 20); - this.comboBox2.Location = new System.Drawing.Point(5, 4); - this.comboBox2.Text = "项目名称"; - this.comboBox2.Name = "comboBox2"; - this.comboBox2.Items.Add("项目名称"); - this.comboBox2.Items.Add("项目编号"); - this.comboBox2.Items.Add("客户名称"); - - // - // tabPage4 - // - this.tabPage4.BackColor = System.Drawing.SystemColors.Control; - this.tabPage4.UseVisualStyleBackColor = true; - this.tabPage4.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.tabPage4.AutoScroll = false; - this.tabPage4.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.tabPage4.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.tabPage4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.tabPage4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.tabPage4.ForeColor = System.Drawing.SystemColors.ControlText; - this.tabPage4.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage4.Padding = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage4.Size = new System.Drawing.Size(479, 692); - this.tabPage4.Text = "报价"; - this.tabPage4.Name = "tabPage4"; - - // - // splitContainer2 - // - this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.None; - this.splitContainer2.IsSplitterFixed = false; - this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; - this.splitContainer2.Panel1Collapsed = false; - this.splitContainer2.Panel2Collapsed = false; - this.splitContainer2.Panel1MinSize = 25; - this.splitContainer2.Panel2MinSize = 25; - this.splitContainer2.SplitterIncrement = 1; - this.splitContainer2.SplitterWidth = 6; - this.splitContainer2.TabStop = true; - this.splitContainer2.BackColor = System.Drawing.SystemColors.Control; - this.splitContainer2.Enabled = true; - this.splitContainer2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.splitContainer2.ForeColor = System.Drawing.SystemColors.ControlText; - this.splitContainer2.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.splitContainer2.MaximumSize = new System.Drawing.Size(0, 0); - this.splitContainer2.MinimumSize = new System.Drawing.Size(0, 0); - this.splitContainer2.TabIndex = 0; - this.splitContainer2.Name = "splitContainer2"; - - // - // advancedDataGridView9 - // - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView9.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView9.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView9.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView9.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView9.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView9.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView9.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView9.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView9.EnableExcelStyleSelection = true; - this.advancedDataGridView9.EnableCellPaste = true; - this.advancedDataGridView9.AllowUserToAddRows = false; - this.advancedDataGridView9.AllowUserToDeleteRows = true; - this.advancedDataGridView9.AllowUserToOrderColumns = false; - this.advancedDataGridView9.AllowUserToResizeColumns = true; - this.advancedDataGridView9.AllowUserToResizeRows = false; - this.advancedDataGridView9.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView9.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView9.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView9.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView9.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView9.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView9.ColumnHeadersHeight = 35; - this.advancedDataGridView9.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView9.ColumnHeadersVisible = true; - this.advancedDataGridView9.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke; - this.advancedDataGridView9.EnableHeadersVisualStyles = false; - this.advancedDataGridView9.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView9.MultiSelect = true; - this.advancedDataGridView9.ReadOnly = false; - this.advancedDataGridView9.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView9.RowHeadersVisible = true; - this.advancedDataGridView9.RowHeadersWidth = 41; - this.advancedDataGridView9.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView9.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView9.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView9.ShowCellErrors = true; - this.advancedDataGridView9.ShowCellToolTips = true; - this.advancedDataGridView9.ShowEditingIcon = true; - this.advancedDataGridView9.ShowRowErrors = true; - this.advancedDataGridView9.StandardTab = false; - this.advancedDataGridView9.VirtualMode = false; - this.advancedDataGridView9.Enabled = true; - this.advancedDataGridView9.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView9.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView9.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView9.TabIndex = 0; - this.advancedDataGridView9.TabStop = true; - this.advancedDataGridView9.Name = "advancedDataGridView9"; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[0].Name = ""; - this.advancedDataGridView9.Columns[0].HeaderText = "序号"; - this.advancedDataGridView9.Columns[0].Width = 35; - this.advancedDataGridView9.Columns[0].Visible = true; - this.advancedDataGridView9.Columns[0].ReadOnly = false; - this.advancedDataGridView9.Columns[0].Frozen = true; - this.advancedDataGridView9.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; - this.advancedDataGridView9.Columns[0].DataPropertyName = "序号"; - this.advancedDataGridView9.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns[0].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[1].Name = ""; - this.advancedDataGridView9.Columns[1].HeaderText = "图号"; - this.advancedDataGridView9.Columns[1].Width = 100; - this.advancedDataGridView9.Columns[1].Visible = true; - this.advancedDataGridView9.Columns[1].ReadOnly = false; - this.advancedDataGridView9.Columns[1].Frozen = false; - this.advancedDataGridView9.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[1].DataPropertyName = "图号"; - this.advancedDataGridView9.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[2].Name = ""; - this.advancedDataGridView9.Columns[2].HeaderText = "图名"; - this.advancedDataGridView9.Columns[2].Width = 100; - this.advancedDataGridView9.Columns[2].Visible = true; - this.advancedDataGridView9.Columns[2].ReadOnly = false; - this.advancedDataGridView9.Columns[2].Frozen = false; - this.advancedDataGridView9.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[2].DataPropertyName = "图名"; - this.advancedDataGridView9.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[3].Name = ""; - this.advancedDataGridView9.Columns[3].HeaderText = "台数"; - this.advancedDataGridView9.Columns[3].Width = 35; - this.advancedDataGridView9.Columns[3].Visible = true; - this.advancedDataGridView9.Columns[3].ReadOnly = false; - this.advancedDataGridView9.Columns[3].Frozen = false; - this.advancedDataGridView9.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[3].DataPropertyName = "台数"; - this.advancedDataGridView9.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns[3].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[4].Name = ""; - this.advancedDataGridView9.Columns[4].HeaderText = "箱柜数量"; - this.advancedDataGridView9.Columns[4].Width = 35; - this.advancedDataGridView9.Columns[4].Visible = true; - this.advancedDataGridView9.Columns[4].ReadOnly = false; - this.advancedDataGridView9.Columns[4].Frozen = false; - this.advancedDataGridView9.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[4].DataPropertyName = "箱柜数量"; - this.advancedDataGridView9.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns[4].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[5].Name = ""; - this.advancedDataGridView9.Columns[5].HeaderText = "单价"; - this.advancedDataGridView9.Columns[5].Width = 100; - this.advancedDataGridView9.Columns[5].Visible = true; - this.advancedDataGridView9.Columns[5].ReadOnly = false; - this.advancedDataGridView9.Columns[5].Frozen = false; - this.advancedDataGridView9.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[5].DataPropertyName = "单价"; - this.advancedDataGridView9.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[6].Name = ""; - this.advancedDataGridView9.Columns[6].HeaderText = "总价"; - this.advancedDataGridView9.Columns[6].Width = 100; - this.advancedDataGridView9.Columns[6].Visible = true; - this.advancedDataGridView9.Columns[6].ReadOnly = false; - this.advancedDataGridView9.Columns[6].Frozen = false; - this.advancedDataGridView9.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[6].DataPropertyName = "总价"; - this.advancedDataGridView9.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[7].Name = ""; - this.advancedDataGridView9.Columns[7].HeaderText = "成本总价"; - this.advancedDataGridView9.Columns[7].Width = 100; - this.advancedDataGridView9.Columns[7].Visible = true; - this.advancedDataGridView9.Columns[7].ReadOnly = false; - this.advancedDataGridView9.Columns[7].Frozen = false; - this.advancedDataGridView9.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[7].DataPropertyName = "成本总价"; - this.advancedDataGridView9.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[8].Name = ""; - this.advancedDataGridView9.Columns[8].HeaderText = "毛利"; - this.advancedDataGridView9.Columns[8].Width = 100; - this.advancedDataGridView9.Columns[8].Visible = true; - this.advancedDataGridView9.Columns[8].ReadOnly = false; - this.advancedDataGridView9.Columns[8].Frozen = false; - this.advancedDataGridView9.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[8].DataPropertyName = "毛利"; - this.advancedDataGridView9.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[9].Name = ""; - this.advancedDataGridView9.Columns[9].HeaderText = "毛利率"; - this.advancedDataGridView9.Columns[9].Width = 100; - this.advancedDataGridView9.Columns[9].Visible = true; - this.advancedDataGridView9.Columns[9].ReadOnly = false; - this.advancedDataGridView9.Columns[9].Frozen = false; - this.advancedDataGridView9.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[9].DataPropertyName = "毛利率"; - this.advancedDataGridView9.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // splitContainer3 - // - this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.None; - this.splitContainer3.IsSplitterFixed = false; - this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; - this.splitContainer3.Panel1Collapsed = false; - this.splitContainer3.Panel2Collapsed = false; - this.splitContainer3.Panel1MinSize = 25; - this.splitContainer3.Panel2MinSize = 25; - this.splitContainer3.SplitterIncrement = 1; - this.splitContainer3.SplitterWidth = 6; - this.splitContainer3.TabStop = true; - this.splitContainer3.BackColor = System.Drawing.SystemColors.Control; - this.splitContainer3.Enabled = true; - this.splitContainer3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.splitContainer3.ForeColor = System.Drawing.SystemColors.ControlText; - this.splitContainer3.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.splitContainer3.MaximumSize = new System.Drawing.Size(0, 0); - this.splitContainer3.MinimumSize = new System.Drawing.Size(0, 0); - this.splitContainer3.TabIndex = 0; - this.splitContainer3.Name = "splitContainer3"; - - // - // advancedDataGridView4 - // - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView4.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView4.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView4.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView4.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView4.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView4.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView4.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView4.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView4.EnableExcelStyleSelection = true; - this.advancedDataGridView4.EnableCellPaste = true; - this.advancedDataGridView4.AllowUserToAddRows = false; - this.advancedDataGridView4.AllowUserToDeleteRows = true; - this.advancedDataGridView4.AllowUserToOrderColumns = false; - this.advancedDataGridView4.AllowUserToResizeColumns = true; - this.advancedDataGridView4.AllowUserToResizeRows = false; - this.advancedDataGridView4.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView4.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView4.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView4.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView4.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView4.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView4.ColumnHeadersHeight = 35; - this.advancedDataGridView4.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView4.ColumnHeadersVisible = true; - this.advancedDataGridView4.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke; - this.advancedDataGridView4.EnableHeadersVisualStyles = false; - this.advancedDataGridView4.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView4.MultiSelect = true; - this.advancedDataGridView4.ReadOnly = false; - this.advancedDataGridView4.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView4.RowHeadersVisible = true; - this.advancedDataGridView4.RowHeadersWidth = 41; - this.advancedDataGridView4.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView4.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView4.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView4.ShowCellErrors = true; - this.advancedDataGridView4.ShowCellToolTips = true; - this.advancedDataGridView4.ShowEditingIcon = true; - this.advancedDataGridView4.ShowRowErrors = true; - this.advancedDataGridView4.StandardTab = false; - this.advancedDataGridView4.VirtualMode = false; - this.advancedDataGridView4.Enabled = true; - this.advancedDataGridView4.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView4.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView4.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView4.TabIndex = 0; - this.advancedDataGridView4.TabStop = true; - this.advancedDataGridView4.Name = "advancedDataGridView4"; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[0].Name = ""; - this.advancedDataGridView4.Columns[0].HeaderText = "序号"; - this.advancedDataGridView4.Columns[0].Width = 35; - this.advancedDataGridView4.Columns[0].Visible = true; - this.advancedDataGridView4.Columns[0].ReadOnly = false; - this.advancedDataGridView4.Columns[0].Frozen = false; - this.advancedDataGridView4.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[0].DataPropertyName = "序号"; - this.advancedDataGridView4.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns[0].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[1].Name = ""; - this.advancedDataGridView4.Columns[1].HeaderText = "箱号"; - this.advancedDataGridView4.Columns[1].Width = 150; - this.advancedDataGridView4.Columns[1].Visible = true; - this.advancedDataGridView4.Columns[1].ReadOnly = false; - this.advancedDataGridView4.Columns[1].Frozen = false; - this.advancedDataGridView4.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[1].DataPropertyName = "箱号"; - this.advancedDataGridView4.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[2].Name = ""; - this.advancedDataGridView4.Columns[2].HeaderText = "箱名"; - this.advancedDataGridView4.Columns[2].Width = 150; - this.advancedDataGridView4.Columns[2].Visible = true; - this.advancedDataGridView4.Columns[2].ReadOnly = false; - this.advancedDataGridView4.Columns[2].Frozen = false; - this.advancedDataGridView4.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[2].DataPropertyName = "箱名"; - this.advancedDataGridView4.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns[2].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[3].Name = ""; - this.advancedDataGridView4.Columns[3].HeaderText = "型号"; - this.advancedDataGridView4.Columns[3].Width = 150; - this.advancedDataGridView4.Columns[3].Visible = true; - this.advancedDataGridView4.Columns[3].ReadOnly = false; - this.advancedDataGridView4.Columns[3].Frozen = false; - this.advancedDataGridView4.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[3].DataPropertyName = "型号"; - this.advancedDataGridView4.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[4].Name = ""; - this.advancedDataGridView4.Columns[4].HeaderText = "规格"; - this.advancedDataGridView4.Columns[4].Width = 150; - this.advancedDataGridView4.Columns[4].Visible = true; - this.advancedDataGridView4.Columns[4].ReadOnly = false; - this.advancedDataGridView4.Columns[4].Frozen = false; - this.advancedDataGridView4.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[4].DataPropertyName = "规格"; - this.advancedDataGridView4.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[5].Name = ""; - this.advancedDataGridView4.Columns[5].HeaderText = "单位"; - this.advancedDataGridView4.Columns[5].Width = 35; - this.advancedDataGridView4.Columns[5].Visible = true; - this.advancedDataGridView4.Columns[5].ReadOnly = false; - this.advancedDataGridView4.Columns[5].Frozen = false; - this.advancedDataGridView4.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[5].DataPropertyName = "单位"; - this.advancedDataGridView4.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns[5].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[6].Name = ""; - this.advancedDataGridView4.Columns[6].HeaderText = "数量"; - this.advancedDataGridView4.Columns[6].Width = 45; - this.advancedDataGridView4.Columns[6].Visible = true; - this.advancedDataGridView4.Columns[6].ReadOnly = false; - this.advancedDataGridView4.Columns[6].Frozen = false; - this.advancedDataGridView4.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[6].DataPropertyName = "数量"; - this.advancedDataGridView4.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns[6].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[7].Name = ""; - this.advancedDataGridView4.Columns[7].HeaderText = "单台成本"; - this.advancedDataGridView4.Columns[7].Width = 100; - this.advancedDataGridView4.Columns[7].Visible = true; - this.advancedDataGridView4.Columns[7].ReadOnly = false; - this.advancedDataGridView4.Columns[7].Frozen = false; - this.advancedDataGridView4.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[7].DataPropertyName = "单台成本"; - this.advancedDataGridView4.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[8].Name = ""; - this.advancedDataGridView4.Columns[8].HeaderText = "成本价"; - this.advancedDataGridView4.Columns[8].Width = 100; - this.advancedDataGridView4.Columns[8].Visible = true; - this.advancedDataGridView4.Columns[8].ReadOnly = false; - this.advancedDataGridView4.Columns[8].Frozen = false; - this.advancedDataGridView4.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[8].DataPropertyName = "成本价"; - this.advancedDataGridView4.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[9].Name = ""; - this.advancedDataGridView4.Columns[9].HeaderText = "单台报出"; - this.advancedDataGridView4.Columns[9].Width = 100; - this.advancedDataGridView4.Columns[9].Visible = true; - this.advancedDataGridView4.Columns[9].ReadOnly = false; - this.advancedDataGridView4.Columns[9].Frozen = false; - this.advancedDataGridView4.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[9].DataPropertyName = "单台报出"; - this.advancedDataGridView4.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[10].Name = ""; - this.advancedDataGridView4.Columns[10].HeaderText = "报出价"; - this.advancedDataGridView4.Columns[10].Width = 100; - this.advancedDataGridView4.Columns[10].Visible = true; - this.advancedDataGridView4.Columns[10].ReadOnly = false; - this.advancedDataGridView4.Columns[10].Frozen = false; - this.advancedDataGridView4.Columns[10].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[10].DataPropertyName = "报出价"; - this.advancedDataGridView4.Columns[10].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[11].Name = ""; - this.advancedDataGridView4.Columns[11].HeaderText = "利润"; - this.advancedDataGridView4.Columns[11].Width = 100; - this.advancedDataGridView4.Columns[11].Visible = true; - this.advancedDataGridView4.Columns[11].ReadOnly = false; - this.advancedDataGridView4.Columns[11].Frozen = false; - this.advancedDataGridView4.Columns[11].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[11].DataPropertyName = "利润"; - this.advancedDataGridView4.Columns[11].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[12].Name = ""; - this.advancedDataGridView4.Columns[12].HeaderText = "利润率"; - this.advancedDataGridView4.Columns[12].Width = 100; - this.advancedDataGridView4.Columns[12].Visible = true; - this.advancedDataGridView4.Columns[12].ReadOnly = false; - this.advancedDataGridView4.Columns[12].Frozen = false; - this.advancedDataGridView4.Columns[12].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[12].DataPropertyName = "利润率"; - this.advancedDataGridView4.Columns[12].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[13].Name = ""; - this.advancedDataGridView4.Columns[13].HeaderText = "毛利率"; - this.advancedDataGridView4.Columns[13].Width = 100; - this.advancedDataGridView4.Columns[13].Visible = true; - this.advancedDataGridView4.Columns[13].ReadOnly = false; - this.advancedDataGridView4.Columns[13].Frozen = false; - this.advancedDataGridView4.Columns[13].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[13].DataPropertyName = "毛利率"; - this.advancedDataGridView4.Columns[13].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[14].Name = ""; - this.advancedDataGridView4.Columns[14].HeaderText = "箱柜类型"; - this.advancedDataGridView4.Columns[14].Width = 100; - this.advancedDataGridView4.Columns[14].Visible = true; - this.advancedDataGridView4.Columns[14].ReadOnly = false; - this.advancedDataGridView4.Columns[14].Frozen = false; - this.advancedDataGridView4.Columns[14].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[14].DataPropertyName = "箱柜类型"; - this.advancedDataGridView4.Columns[14].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[15].Name = ""; - this.advancedDataGridView4.Columns[15].HeaderText = "备注"; - this.advancedDataGridView4.Columns[15].Width = 100; - this.advancedDataGridView4.Columns[15].Visible = true; - this.advancedDataGridView4.Columns[15].ReadOnly = false; - this.advancedDataGridView4.Columns[15].Frozen = false; - this.advancedDataGridView4.Columns[15].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[15].DataPropertyName = "备注"; - this.advancedDataGridView4.Columns[15].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[16].Name = ""; - this.advancedDataGridView4.Columns[16].HeaderText = "图纸"; - this.advancedDataGridView4.Columns[16].Width = 100; - this.advancedDataGridView4.Columns[16].Visible = true; - this.advancedDataGridView4.Columns[16].ReadOnly = false; - this.advancedDataGridView4.Columns[16].Frozen = false; - this.advancedDataGridView4.Columns[16].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[16].DataPropertyName = "图纸"; - this.advancedDataGridView4.Columns[16].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // advancedDataGridView5 - // - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView5.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView5.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView5.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView5.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView5.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView5.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView5.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView5.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView5.EnableExcelStyleSelection = true; - this.advancedDataGridView5.EnableCellPaste = true; - this.advancedDataGridView5.AllowUserToAddRows = false; - this.advancedDataGridView5.AllowUserToDeleteRows = true; - this.advancedDataGridView5.AllowUserToOrderColumns = false; - this.advancedDataGridView5.AllowUserToResizeColumns = true; - this.advancedDataGridView5.AllowUserToResizeRows = false; - this.advancedDataGridView5.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView5.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView5.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView5.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView5.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView5.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView5.ColumnHeadersHeight = 35; - this.advancedDataGridView5.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView5.ColumnHeadersVisible = true; - this.advancedDataGridView5.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke; - this.advancedDataGridView5.EnableHeadersVisualStyles = false; - this.advancedDataGridView5.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView5.MultiSelect = true; - this.advancedDataGridView5.ReadOnly = false; - this.advancedDataGridView5.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView5.RowHeadersVisible = true; - this.advancedDataGridView5.RowHeadersWidth = 41; - this.advancedDataGridView5.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView5.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView5.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView5.ShowCellErrors = true; - this.advancedDataGridView5.ShowCellToolTips = true; - this.advancedDataGridView5.ShowEditingIcon = true; - this.advancedDataGridView5.ShowRowErrors = true; - this.advancedDataGridView5.StandardTab = false; - this.advancedDataGridView5.VirtualMode = false; - this.advancedDataGridView5.Enabled = true; - this.advancedDataGridView5.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView5.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView5.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView5.TabIndex = 0; - this.advancedDataGridView5.TabStop = true; - this.advancedDataGridView5.Name = "advancedDataGridView5"; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[0].Name = ""; - this.advancedDataGridView5.Columns[0].HeaderText = "序号"; - this.advancedDataGridView5.Columns[0].Width = 35; - this.advancedDataGridView5.Columns[0].Visible = true; - this.advancedDataGridView5.Columns[0].ReadOnly = false; - this.advancedDataGridView5.Columns[0].Frozen = false; - this.advancedDataGridView5.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[0].DataPropertyName = "序号"; - this.advancedDataGridView5.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns[0].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[1].Name = ""; - this.advancedDataGridView5.Columns[1].HeaderText = "元件名称"; - this.advancedDataGridView5.Columns[1].Width = 150; - this.advancedDataGridView5.Columns[1].Visible = true; - this.advancedDataGridView5.Columns[1].ReadOnly = false; - this.advancedDataGridView5.Columns[1].Frozen = false; - this.advancedDataGridView5.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[1].DataPropertyName = "元件名称"; - this.advancedDataGridView5.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[2].Name = ""; - this.advancedDataGridView5.Columns[2].HeaderText = "规格"; - this.advancedDataGridView5.Columns[2].Width = 150; - this.advancedDataGridView5.Columns[2].Visible = true; - this.advancedDataGridView5.Columns[2].ReadOnly = false; - this.advancedDataGridView5.Columns[2].Frozen = false; - this.advancedDataGridView5.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[2].DataPropertyName = "规格"; - this.advancedDataGridView5.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[3].Name = ""; - this.advancedDataGridView5.Columns[3].HeaderText = "单位"; - this.advancedDataGridView5.Columns[3].Width = 35; - this.advancedDataGridView5.Columns[3].Visible = true; - this.advancedDataGridView5.Columns[3].ReadOnly = false; - this.advancedDataGridView5.Columns[3].Frozen = false; - this.advancedDataGridView5.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[3].DataPropertyName = "单位"; - this.advancedDataGridView5.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns[3].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[4].Name = ""; - this.advancedDataGridView5.Columns[4].HeaderText = "数量"; - this.advancedDataGridView5.Columns[4].Width = 40; - this.advancedDataGridView5.Columns[4].Visible = true; - this.advancedDataGridView5.Columns[4].ReadOnly = false; - this.advancedDataGridView5.Columns[4].Frozen = false; - this.advancedDataGridView5.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[4].DataPropertyName = "数量"; - this.advancedDataGridView5.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns[4].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[5].Name = ""; - this.advancedDataGridView5.Columns[5].HeaderText = "表价"; - this.advancedDataGridView5.Columns[5].Width = 100; - this.advancedDataGridView5.Columns[5].Visible = true; - this.advancedDataGridView5.Columns[5].ReadOnly = false; - this.advancedDataGridView5.Columns[5].Frozen = false; - this.advancedDataGridView5.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[5].DataPropertyName = "表价"; - this.advancedDataGridView5.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[6].Name = ""; - this.advancedDataGridView5.Columns[6].HeaderText = "采购单价"; - this.advancedDataGridView5.Columns[6].Width = 100; - this.advancedDataGridView5.Columns[6].Visible = true; - this.advancedDataGridView5.Columns[6].ReadOnly = false; - this.advancedDataGridView5.Columns[6].Frozen = false; - this.advancedDataGridView5.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[6].DataPropertyName = "采购单价"; - this.advancedDataGridView5.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[7].Name = ""; - this.advancedDataGridView5.Columns[7].HeaderText = "采购系数"; - this.advancedDataGridView5.Columns[7].Width = 100; - this.advancedDataGridView5.Columns[7].Visible = true; - this.advancedDataGridView5.Columns[7].ReadOnly = false; - this.advancedDataGridView5.Columns[7].Frozen = false; - this.advancedDataGridView5.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[7].DataPropertyName = "采购系数"; - this.advancedDataGridView5.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[8].Name = ""; - this.advancedDataGridView5.Columns[8].HeaderText = "采购价"; - this.advancedDataGridView5.Columns[8].Width = 100; - this.advancedDataGridView5.Columns[8].Visible = true; - this.advancedDataGridView5.Columns[8].ReadOnly = false; - this.advancedDataGridView5.Columns[8].Frozen = false; - this.advancedDataGridView5.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[8].DataPropertyName = "采购价"; - this.advancedDataGridView5.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[9].Name = ""; - this.advancedDataGridView5.Columns[9].HeaderText = "报出单价"; - this.advancedDataGridView5.Columns[9].Width = 100; - this.advancedDataGridView5.Columns[9].Visible = true; - this.advancedDataGridView5.Columns[9].ReadOnly = false; - this.advancedDataGridView5.Columns[9].Frozen = false; - this.advancedDataGridView5.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[9].DataPropertyName = "报出单价"; - this.advancedDataGridView5.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[10].Name = ""; - this.advancedDataGridView5.Columns[10].HeaderText = "报出系数"; - this.advancedDataGridView5.Columns[10].Width = 100; - this.advancedDataGridView5.Columns[10].Visible = true; - this.advancedDataGridView5.Columns[10].ReadOnly = false; - this.advancedDataGridView5.Columns[10].Frozen = false; - this.advancedDataGridView5.Columns[10].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[10].DataPropertyName = "报出系数"; - this.advancedDataGridView5.Columns[10].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[11].Name = ""; - this.advancedDataGridView5.Columns[11].HeaderText = "报出价"; - this.advancedDataGridView5.Columns[11].Width = 100; - this.advancedDataGridView5.Columns[11].Visible = true; - this.advancedDataGridView5.Columns[11].ReadOnly = false; - this.advancedDataGridView5.Columns[11].Frozen = false; - this.advancedDataGridView5.Columns[11].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[11].DataPropertyName = "报出价"; - this.advancedDataGridView5.Columns[11].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[12].Name = ""; - this.advancedDataGridView5.Columns[12].HeaderText = "图纸规格"; - this.advancedDataGridView5.Columns[12].Width = 100; - this.advancedDataGridView5.Columns[12].Visible = true; - this.advancedDataGridView5.Columns[12].ReadOnly = false; - this.advancedDataGridView5.Columns[12].Frozen = false; - this.advancedDataGridView5.Columns[12].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[12].DataPropertyName = "图纸规格"; - this.advancedDataGridView5.Columns[12].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[13].Name = ""; - this.advancedDataGridView5.Columns[13].HeaderText = "品牌"; - this.advancedDataGridView5.Columns[13].Width = 100; - this.advancedDataGridView5.Columns[13].Visible = true; - this.advancedDataGridView5.Columns[13].ReadOnly = false; - this.advancedDataGridView5.Columns[13].Frozen = false; - this.advancedDataGridView5.Columns[13].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[13].DataPropertyName = "品牌"; - this.advancedDataGridView5.Columns[13].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[14].Name = ""; - this.advancedDataGridView5.Columns[14].HeaderText = "系列"; - this.advancedDataGridView5.Columns[14].Width = 100; - this.advancedDataGridView5.Columns[14].Visible = true; - this.advancedDataGridView5.Columns[14].ReadOnly = false; - this.advancedDataGridView5.Columns[14].Frozen = false; - this.advancedDataGridView5.Columns[14].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[14].DataPropertyName = "系列"; - this.advancedDataGridView5.Columns[14].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[15].Name = ""; - this.advancedDataGridView5.Columns[15].HeaderText = "类型"; - this.advancedDataGridView5.Columns[15].Width = 100; - this.advancedDataGridView5.Columns[15].Visible = true; - this.advancedDataGridView5.Columns[15].ReadOnly = false; - this.advancedDataGridView5.Columns[15].Frozen = false; - this.advancedDataGridView5.Columns[15].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[15].DataPropertyName = "类型"; - this.advancedDataGridView5.Columns[15].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[16].Name = ""; - this.advancedDataGridView5.Columns[16].HeaderText = "备注"; - this.advancedDataGridView5.Columns[16].Width = 100; - this.advancedDataGridView5.Columns[16].Visible = true; - this.advancedDataGridView5.Columns[16].ReadOnly = false; - this.advancedDataGridView5.Columns[16].Frozen = false; - this.advancedDataGridView5.Columns[16].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[16].DataPropertyName = "备注"; - this.advancedDataGridView5.Columns[16].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // toolStrip1 - // - this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Top; - this.toolStrip1.AutoSize = true; - this.toolStrip1.AllowItemReorder = false; - this.toolStrip1.AllowMerge = true; - this.toolStrip1.BackColor = System.Drawing.SystemColors.Control; - this.toolStrip1.CanOverflow = true; - this.toolStrip1.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Visible; - this.toolStrip1.GripMargin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.toolStrip1.ImageScalingSize = new System.Drawing.Size(16, 16); - this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; - this.toolStrip1.Stretch = false; - this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode; - this.toolStrip1.ShowItemToolTips = true; - this.toolStrip1.TabStop = false; - this.toolStrip1.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal; - this.toolStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.toolStrip1.Enabled = true; - this.toolStrip1.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.toolStrip1.MaximumSize = new System.Drawing.Size(0, 0); - this.toolStrip1.MinimumSize = new System.Drawing.Size(0, 0); - this.toolStrip1.TabIndex = 1; - this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0); - this.toolStrip1.Size = new System.Drawing.Size(487, 25); - this.toolStrip1.Location = new System.Drawing.Point(0, 0); - this.toolStrip1.Name = "toolStrip1"; - - // - // toolStripButton1 - // - this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton1.ToolTipText = "导出数据"; - this.toolStripButton1.Size = new System.Drawing.Size(60, 22); - this.toolStripButton1.Text = "导出数据"; - this.toolStripButton1.Name = "toolStripButton1"; - - // - // toolStripButton5 - // - this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton5.ToolTipText = "新建项目"; - this.toolStripButton5.Size = new System.Drawing.Size(60, 22); - this.toolStripButton5.Text = "新建项目"; - this.toolStripButton5.Name = "toolStripButton5"; - - // - // toolStripButton6 - // - this.toolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton6.ToolTipText = "删除项目"; - this.toolStripButton6.Size = new System.Drawing.Size(60, 22); - this.toolStripButton6.Text = "删除项目"; - this.toolStripButton6.Name = "toolStripButton6"; - - // - // toolStripButton2 - // - this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton2.ToolTipText = "扒图号"; - this.toolStripButton2.Size = new System.Drawing.Size(48, 22); - this.toolStripButton2.Text = "扒图号"; - this.toolStripButton2.Name = "toolStripButton2"; - - // - // toolStripButton3 - // - this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton3.ToolTipText = "扒箱号"; - this.toolStripButton3.Size = new System.Drawing.Size(48, 22); - this.toolStripButton3.Text = "扒箱号"; - this.toolStripButton3.Name = "toolStripButton3"; - - // - // toolStripButton4 - // - this.toolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton4.ToolTipText = "扒元件"; - this.toolStripButton4.Size = new System.Drawing.Size(48, 22); - this.toolStripButton4.Text = "扒元件"; - this.toolStripButton4.Name = "toolStripButton4"; - - // - // toolStripButton7 - // - this.toolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton7.Size = new System.Drawing.Size(36, 22); - this.toolStripButton7.Text = "设置"; - this.toolStripButton7.Name = "toolStripButton7"; - - // Form3 - this.Controls.AddRange(new System.Windows.Forms.Control[] { - this.tabControl2, - this.toolStrip1, - }); - // tabControl2 - this.tabControl2.Controls.AddRange(new System.Windows.Forms.Control[] { - this.tabPage3, - this.tabPage4, - }); - // tabPage3 - this.tabPage3.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView6, - this.panel1, - }); - // panel1 - this.panel1.Controls.AddRange(new System.Windows.Forms.Control[] { - this.button28, - this.textBox1, - this.comboBox2, - }); - // tabPage4 - this.tabPage4.Controls.AddRange(new System.Windows.Forms.Control[] { - this.splitContainer2, - }); - // Panel1 - this.splitContainer2.Panel1.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView9, - }); - // Panel2 - this.splitContainer2.Panel2.Controls.AddRange(new System.Windows.Forms.Control[] { - this.splitContainer3, - }); - // Panel1 - this.splitContainer3.Panel1.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView4, - }); - // Panel2 - this.splitContainer3.Panel2.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView5, - }); - // toolStrip1 - this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripButton1, - this.toolStripButton5, - this.toolStripButton6, - this.toolStripButton2, - this.toolStripButton3, - this.toolStripButton4, - this.toolStripButton7, - }); - // - // Form3 - // - this.Dock = System.Windows.Forms.DockStyle.None; - this.AutoScroll = false; - this.AutoSize = false; - this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; - this.BackColor = System.Drawing.SystemColors.Control; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.ControlBox = true; - this.HelpButton = false; - this.IsMdiContainer = false; - this.KeyPreview = false; - this.MaximumSize = new System.Drawing.Size(0, 0); - this.MinimumSize = new System.Drawing.Size(0, 0); - this.MaximizeBox = true; - this.MinimizeBox = true; - this.Opacity = 1; - this.RightToLeftLayout = false; - this.ShowInTaskbar = true; - this.ShowIcon = true; - this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Auto; - this.StartPosition = System.Windows.Forms.FormStartPosition.WindowsDefaultLocation; - this.TopMost = false; - this.WindowState = System.Windows.Forms.FormWindowState.Normal; - this.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.Enabled = true; - this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.ForeColor = System.Drawing.SystemColors.ControlText; - this.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.Size = new System.Drawing.Size(503, 785); - this.Text = "Form3"; - this.Name = "Form3"; - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView6)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView9)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView4)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView5)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - this.splitContainer2.SplitterDistance = 173; - this.splitContainer3.SplitterDistance = 239; - - // === DataGridView Excel 风格选中效果 === - - // === SQLite 设计时数据绑定(由设计器注入) === - // 在 Form.Load 事件中加载所有绑定数据 - this.Load += (sender, e) => LoadAllSqliteData(); - } - - #endregion - - private System.Windows.Forms.TabControl tabControl2; - private System.Windows.Forms.TabPage tabPage3; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView6; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button button28; - private System.Windows.Forms.TextBox textBox1; - private System.Windows.Forms.ComboBox comboBox2; - private System.Windows.Forms.TabPage tabPage4; - private System.Windows.Forms.SplitContainer splitContainer2; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView9; - private System.Windows.Forms.SplitContainer splitContainer3; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView4; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView5; - private System.Windows.Forms.ToolStrip toolStrip1; - private System.Windows.Forms.ToolStripButton toolStripButton1; - private System.Windows.Forms.ToolStripButton toolStripButton5; - private System.Windows.Forms.ToolStripButton toolStripButton6; - private System.Windows.Forms.ToolStripButton toolStripButton2; - private System.Windows.Forms.ToolStripButton toolStripButton3; - private System.Windows.Forms.ToolStripButton toolStripButton4; - private System.Windows.Forms.ToolStripButton toolStripButton7; - - /// 加载所有 SQLite 设计数据绑定。 - private void LoadAllSqliteData() - { - if (!System.Environment.Is64BitProcess) - { - System.Windows.Forms.MessageBox.Show( - "当前程序以 32 位进程运行,但 System.Data.SQLite.dll 是 64 位(x64)。\n" + - "请用 /platform:x64 编译本程序(运行同目录下 build.bat 即可)。", - "SQLite 加载失败", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); - return; - } - try { LoadSqliteData_advancedDataGridView6(); } catch (System.Exception ex_advancedDataGridView6) { System.Windows.Forms.MessageBox.Show("加载数据失败 (advancedDataGridView6): " + ex_advancedDataGridView6.Message); } - } - - /// 为 advancedDataGridView6 加载 SQLite 数据(由设计器生成)。 - private void LoadSqliteData_advancedDataGridView6() - { - // ★ 数据库路径:优先用插件真实目录(_baseDir 在 Form3.cs,注册表/CodeBase 解析), - // 在 CAD 中加载时 BaseDirectory 指向 CAD 安装目录会找不到库 - string dbPath = System.IO.Path.Combine( - GetPluginBaseDirForUi(), @"sjk\advancedDataGridView6Table.db"); - if (!System.IO.File.Exists(dbPath)) - { - // ★ 静默跳过(不弹窗):构造函数里的 Load 事件已用正确路径重新加载 - System.Diagnostics.Debug.WriteLine("找不到数据库文件: " + dbPath); - return; - } - - string connStr = "Data Source=" + dbPath + ";Version=3;busy_timeout=3000;"; - var table = new System.Data.DataTable(); - using (var conn = new System.Data.SQLite.SQLiteConnection(connStr)) - { - conn.Open(); - string sql = @"SELECT * FROM advancedDataGridView6Table"; - using (var adapter = new System.Data.SQLite.SQLiteDataAdapter(sql, conn)) - { - adapter.Fill(table); - } - } - - this.advancedDataGridView6.AutoGenerateColumns = false; - // KeepCustomColumns=true:设计器中自定义的列不会被覆盖, - // 数据库列通过 DataPropertyName 与控件列关联。 - // 若列名与数据库列名相同,运行时会自动绑定数据。 - this.advancedDataGridView6.DataSource = table; - } - - /// - /// ui.cs 侧获取插件目录:复用 Form3.cs 的 _baseDir - /// (partial 类同字段;_baseDir 在 Form3.cs 中由注册表/CodeBase 解析) - /// - private string GetPluginBaseDirForUi() - { - return _baseDir; - } - } -} diff --git a/cadbt/cadbt/cadcj/Form3.ui.cs.bak_xiangming b/cadbt/cadbt/cadcj/Form3.ui.cs.bak_xiangming deleted file mode 100644 index d9e7a56..0000000 --- a/cadbt/cadbt/cadcj/Form3.ui.cs.bak_xiangming +++ /dev/null @@ -1,1399 +0,0 @@ -namespace MyApp -{ - public partial class Form3 : System.Windows.Forms.Form - { - /// 必需的设计器变量。 - private System.ComponentModel.IContainer components = null; - - /// 清理正在使用的资源。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows 窗体设计器生成的代码 - - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - - this.tabControl2 = new System.Windows.Forms.TabControl(); - this.tabPage3 = new System.Windows.Forms.TabPage(); - this.advancedDataGridView6 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView6)).BeginInit(); - this.panel1 = new System.Windows.Forms.Panel(); - this.button28 = new System.Windows.Forms.Button(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.comboBox2 = new System.Windows.Forms.ComboBox(); - this.tabPage4 = new System.Windows.Forms.TabPage(); - this.splitContainer2 = new System.Windows.Forms.SplitContainer(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); - this.advancedDataGridView9 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView9)).BeginInit(); - this.splitContainer3 = new System.Windows.Forms.SplitContainer(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); - this.advancedDataGridView4 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView4)).BeginInit(); - this.advancedDataGridView5 = new Zuby.ADGV.AdvancedDataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView5)).BeginInit(); - this.toolStrip1 = new System.Windows.Forms.ToolStrip(); - this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton5 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton6 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton7 = new System.Windows.Forms.ToolStripButton(); - this.SuspendLayout(); - // - // tabControl2 - // - this.tabControl2.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabControl2.Alignment = System.Windows.Forms.TabAlignment.Top; - this.tabControl2.Appearance = System.Windows.Forms.TabAppearance.Normal; - this.tabControl2.DrawMode = System.Windows.Forms.TabDrawMode.Normal; - this.tabControl2.HotTrack = false; - this.tabControl2.ItemSize = new System.Drawing.Size(60, 21); - this.tabControl2.Multiline = false; - this.tabControl2.Padding = new System.Drawing.Point(6, 3); - this.tabControl2.RightToLeftLayout = false; - this.tabControl2.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; - this.tabControl2.ShowToolTips = false; - this.tabControl2.Enabled = true; - this.tabControl2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.tabControl2.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabControl2.MaximumSize = new System.Drawing.Size(0, 0); - this.tabControl2.MinimumSize = new System.Drawing.Size(0, 0); - this.tabControl2.TabIndex = 0; - this.tabControl2.TabStop = true; - this.tabControl2.Name = "tabControl2"; - - // - // tabPage3 - // - this.tabPage3.BackColor = System.Drawing.SystemColors.Control; - this.tabPage3.UseVisualStyleBackColor = true; - this.tabPage3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.tabPage3.AutoScroll = false; - this.tabPage3.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.tabPage3.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.tabPage3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.tabPage3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.tabPage3.ForeColor = System.Drawing.SystemColors.ControlText; - this.tabPage3.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage3.Padding = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage3.Size = new System.Drawing.Size(479, 717); - this.tabPage3.Text = "项目"; - this.tabPage3.Name = "tabPage3"; - - // - // advancedDataGridView6 - // - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView6.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView6.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView6.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView6.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView6.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView6.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView6.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView6.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView6.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView6.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView6.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView6.EnableExcelStyleSelection = true; - this.advancedDataGridView6.EnableCellPaste = false; - this.advancedDataGridView6.AllowUserToAddRows = false; - this.advancedDataGridView6.AllowUserToDeleteRows = true; - this.advancedDataGridView6.AllowUserToOrderColumns = false; - this.advancedDataGridView6.AllowUserToResizeColumns = true; - this.advancedDataGridView6.AllowUserToResizeRows = false; - this.advancedDataGridView6.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView6.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView6.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView6.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView6.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView6.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView6.ColumnHeadersHeight = 25; - this.advancedDataGridView6.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView6.ColumnHeadersVisible = true; - this.advancedDataGridView6.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystrokeOrF2; - this.advancedDataGridView6.EnableHeadersVisualStyles = false; - this.advancedDataGridView6.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView6.MultiSelect = true; - this.advancedDataGridView6.ReadOnly = true; - this.advancedDataGridView6.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView6.RowHeadersVisible = true; - this.advancedDataGridView6.RowHeadersWidth = 41; - this.advancedDataGridView6.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView6.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView6.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView6.ShowCellErrors = true; - this.advancedDataGridView6.ShowCellToolTips = true; - this.advancedDataGridView6.ShowEditingIcon = true; - this.advancedDataGridView6.ShowRowErrors = true; - this.advancedDataGridView6.StandardTab = false; - this.advancedDataGridView6.VirtualMode = false; - this.advancedDataGridView6.Enabled = true; - this.advancedDataGridView6.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView6.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView6.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView6.TabIndex = 1; - this.advancedDataGridView6.TabStop = true; - this.advancedDataGridView6.Name = "advancedDataGridView6"; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[0].Name = "Column2"; - this.advancedDataGridView6.Columns[0].HeaderText = "项目编号"; - this.advancedDataGridView6.Columns[0].Width = 100; - this.advancedDataGridView6.Columns[0].Visible = true; - this.advancedDataGridView6.Columns[0].ReadOnly = true; - this.advancedDataGridView6.Columns[0].Frozen = false; - this.advancedDataGridView6.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[0].DataPropertyName = "项目编号"; - this.advancedDataGridView6.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[1].Name = "Column3"; - this.advancedDataGridView6.Columns[1].HeaderText = "项目名称"; - this.advancedDataGridView6.Columns[1].Width = 100; - this.advancedDataGridView6.Columns[1].Visible = true; - this.advancedDataGridView6.Columns[1].ReadOnly = true; - this.advancedDataGridView6.Columns[1].Frozen = false; - this.advancedDataGridView6.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[1].DataPropertyName = "项目名称"; - this.advancedDataGridView6.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[2].Name = ""; - this.advancedDataGridView6.Columns[2].HeaderText = "客户名称"; - this.advancedDataGridView6.Columns[2].Width = 100; - this.advancedDataGridView6.Columns[2].Visible = true; - this.advancedDataGridView6.Columns[2].ReadOnly = true; - this.advancedDataGridView6.Columns[2].Frozen = false; - this.advancedDataGridView6.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[2].DataPropertyName = "客户名称"; - this.advancedDataGridView6.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[3].Name = ""; - this.advancedDataGridView6.Columns[3].HeaderText = "客户地址"; - this.advancedDataGridView6.Columns[3].Width = 100; - this.advancedDataGridView6.Columns[3].Visible = true; - this.advancedDataGridView6.Columns[3].ReadOnly = true; - this.advancedDataGridView6.Columns[3].Frozen = false; - this.advancedDataGridView6.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[3].DataPropertyName = "客户地址"; - this.advancedDataGridView6.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[4].Name = ""; - this.advancedDataGridView6.Columns[4].HeaderText = "联系人"; - this.advancedDataGridView6.Columns[4].Width = 100; - this.advancedDataGridView6.Columns[4].Visible = true; - this.advancedDataGridView6.Columns[4].ReadOnly = true; - this.advancedDataGridView6.Columns[4].Frozen = false; - this.advancedDataGridView6.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[4].DataPropertyName = "联系人"; - this.advancedDataGridView6.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[5].Name = ""; - this.advancedDataGridView6.Columns[5].HeaderText = "联系电话"; - this.advancedDataGridView6.Columns[5].Width = 100; - this.advancedDataGridView6.Columns[5].Visible = true; - this.advancedDataGridView6.Columns[5].ReadOnly = true; - this.advancedDataGridView6.Columns[5].Frozen = false; - this.advancedDataGridView6.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[5].DataPropertyName = "联系电话"; - this.advancedDataGridView6.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[6].Name = ""; - this.advancedDataGridView6.Columns[6].HeaderText = "项目日期"; - this.advancedDataGridView6.Columns[6].Width = 100; - this.advancedDataGridView6.Columns[6].Visible = true; - this.advancedDataGridView6.Columns[6].ReadOnly = true; - this.advancedDataGridView6.Columns[6].Frozen = false; - this.advancedDataGridView6.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[6].DataPropertyName = "项目日期"; - this.advancedDataGridView6.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[7].Name = ""; - this.advancedDataGridView6.Columns[7].HeaderText = "箱柜台数"; - this.advancedDataGridView6.Columns[7].Width = 100; - this.advancedDataGridView6.Columns[7].Visible = true; - this.advancedDataGridView6.Columns[7].ReadOnly = true; - this.advancedDataGridView6.Columns[7].Frozen = false; - this.advancedDataGridView6.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[7].DataPropertyName = "箱柜台数"; - this.advancedDataGridView6.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[8].Name = ""; - this.advancedDataGridView6.Columns[8].HeaderText = "成本总价"; - this.advancedDataGridView6.Columns[8].Width = 100; - this.advancedDataGridView6.Columns[8].Visible = true; - this.advancedDataGridView6.Columns[8].ReadOnly = true; - this.advancedDataGridView6.Columns[8].Frozen = false; - this.advancedDataGridView6.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[8].DataPropertyName = "成本总价"; - this.advancedDataGridView6.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[9].Name = ""; - this.advancedDataGridView6.Columns[9].HeaderText = "报出总价"; - this.advancedDataGridView6.Columns[9].Width = 100; - this.advancedDataGridView6.Columns[9].Visible = true; - this.advancedDataGridView6.Columns[9].ReadOnly = true; - this.advancedDataGridView6.Columns[9].Frozen = false; - this.advancedDataGridView6.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[9].DataPropertyName = "报出总价"; - this.advancedDataGridView6.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[10].Name = ""; - this.advancedDataGridView6.Columns[10].HeaderText = "利润"; - this.advancedDataGridView6.Columns[10].Width = 100; - this.advancedDataGridView6.Columns[10].Visible = true; - this.advancedDataGridView6.Columns[10].ReadOnly = true; - this.advancedDataGridView6.Columns[10].Frozen = false; - this.advancedDataGridView6.Columns[10].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[10].DataPropertyName = "利润"; - this.advancedDataGridView6.Columns[10].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[11].Name = ""; - this.advancedDataGridView6.Columns[11].HeaderText = "利润率"; - this.advancedDataGridView6.Columns[11].Width = 100; - this.advancedDataGridView6.Columns[11].Visible = true; - this.advancedDataGridView6.Columns[11].ReadOnly = true; - this.advancedDataGridView6.Columns[11].Frozen = false; - this.advancedDataGridView6.Columns[11].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[11].DataPropertyName = "利润率"; - this.advancedDataGridView6.Columns[11].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView6.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView6.Columns[12].Name = ""; - this.advancedDataGridView6.Columns[12].HeaderText = "备注"; - this.advancedDataGridView6.Columns[12].Width = 100; - this.advancedDataGridView6.Columns[12].Visible = true; - this.advancedDataGridView6.Columns[12].ReadOnly = true; - this.advancedDataGridView6.Columns[12].Frozen = false; - this.advancedDataGridView6.Columns[12].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView6.Columns[12].DataPropertyName = "备注"; - this.advancedDataGridView6.Columns[12].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // panel1 - // - this.panel1.Dock = System.Windows.Forms.DockStyle.Top; - this.panel1.AutoSize = false; - this.panel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.panel1.TabStop = false; - this.panel1.AutoScroll = false; - this.panel1.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.panel1.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.panel1.BackColor = System.Drawing.SystemColors.Control; - this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.panel1.Enabled = true; - this.panel1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.panel1.ForeColor = System.Drawing.SystemColors.ControlText; - this.panel1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.panel1.MaximumSize = new System.Drawing.Size(0, 0); - this.panel1.MinimumSize = new System.Drawing.Size(0, 0); - this.panel1.TabIndex = 0; - this.panel1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.panel1.Size = new System.Drawing.Size(473, 28); - this.panel1.Location = new System.Drawing.Point(3, 3); - this.panel1.Name = "panel1"; - - // - // button28 - // - this.button28.Dock = System.Windows.Forms.DockStyle.None; - this.button28.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.button28.DialogResult = System.Windows.Forms.DialogResult.None; - this.button28.AutoEllipsis = false; - this.button28.AutoSize = false; - this.button28.BackColor = System.Drawing.SystemColors.Control; - this.button28.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.button28.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.button28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.button28.TextImageRelation = System.Windows.Forms.TextImageRelation.Overlay; - this.button28.UseMnemonic = true; - this.button28.UseCompatibleTextRendering = false; - this.button28.UseVisualStyleBackColor = true; - this.button28.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.button28.Enabled = true; - this.button28.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.button28.ForeColor = System.Drawing.SystemColors.ControlText; - this.button28.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.button28.MaximumSize = new System.Drawing.Size(0, 0); - this.button28.MinimumSize = new System.Drawing.Size(0, 0); - this.button28.TabIndex = 2; - this.button28.TabStop = true; - this.button28.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.button28.Size = new System.Drawing.Size(75, 23); - this.button28.Location = new System.Drawing.Point(335, 2); - this.button28.Text = "查找"; - this.button28.Name = "button28"; - - // - // textBox1 - // - this.textBox1.Dock = System.Windows.Forms.DockStyle.None; - this.textBox1.AcceptsReturn = false; - this.textBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.textBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.textBox1.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.textBox1.Multiline = false; - this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.textBox1.UseSystemPasswordChar = false; - this.textBox1.AcceptsTab = false; - this.textBox1.ShortcutsEnabled = true; - this.textBox1.BackColor = System.Drawing.SystemColors.Window; - this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.textBox1.ForeColor = System.Drawing.SystemColors.WindowText; - this.textBox1.HideSelection = true; - this.textBox1.MaxLength = 32767; - this.textBox1.ReadOnly = false; - this.textBox1.WordWrap = true; - this.textBox1.Enabled = true; - this.textBox1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.textBox1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.textBox1.MaximumSize = new System.Drawing.Size(0, 0); - this.textBox1.MinimumSize = new System.Drawing.Size(0, 0); - this.textBox1.TabIndex = 1; - this.textBox1.TabStop = true; - this.textBox1.Size = new System.Drawing.Size(210, 21); - this.textBox1.Location = new System.Drawing.Point(119, 4); - this.textBox1.Name = "textBox1"; - - // - // comboBox2 - // - this.comboBox2.Dock = System.Windows.Forms.DockStyle.None; - this.comboBox2.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.comboBox2.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.comboBox2.BackColor = System.Drawing.SystemColors.Window; - this.comboBox2.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.comboBox2.DropDownWidth = 108; - this.comboBox2.DropDownHeight = 106; - this.comboBox2.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.comboBox2.ForeColor = System.Drawing.SystemColors.WindowText; - this.comboBox2.IntegralHeight = true; - this.comboBox2.ItemHeight = 12; - this.comboBox2.MaxDropDownItems = 8; - this.comboBox2.MaximumSize = new System.Drawing.Size(0, 0); - this.comboBox2.MinimumSize = new System.Drawing.Size(0, 0); - this.comboBox2.MaxLength = 0; - this.comboBox2.Sorted = false; - this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.comboBox2.FormattingEnabled = false; - this.comboBox2.Enabled = true; - this.comboBox2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.comboBox2.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.comboBox2.TabIndex = 0; - this.comboBox2.TabStop = true; - this.comboBox2.Size = new System.Drawing.Size(108, 20); - this.comboBox2.Location = new System.Drawing.Point(5, 4); - this.comboBox2.Text = "项目名称"; - this.comboBox2.Name = "comboBox2"; - this.comboBox2.Items.Add("项目名称"); - this.comboBox2.Items.Add("项目编号"); - this.comboBox2.Items.Add("客户名称"); - - // - // tabPage4 - // - this.tabPage4.BackColor = System.Drawing.SystemColors.Control; - this.tabPage4.UseVisualStyleBackColor = true; - this.tabPage4.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.tabPage4.AutoScroll = false; - this.tabPage4.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.tabPage4.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.tabPage4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.tabPage4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.tabPage4.ForeColor = System.Drawing.SystemColors.ControlText; - this.tabPage4.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage4.Padding = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.tabPage4.Size = new System.Drawing.Size(479, 692); - this.tabPage4.Text = "报价"; - this.tabPage4.Name = "tabPage4"; - - // - // splitContainer2 - // - this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.None; - this.splitContainer2.IsSplitterFixed = false; - this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; - this.splitContainer2.Panel1Collapsed = false; - this.splitContainer2.Panel2Collapsed = false; - this.splitContainer2.Panel1MinSize = 25; - this.splitContainer2.Panel2MinSize = 25; - this.splitContainer2.SplitterIncrement = 1; - this.splitContainer2.SplitterWidth = 6; - this.splitContainer2.TabStop = true; - this.splitContainer2.BackColor = System.Drawing.SystemColors.Control; - this.splitContainer2.Enabled = true; - this.splitContainer2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.splitContainer2.ForeColor = System.Drawing.SystemColors.ControlText; - this.splitContainer2.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.splitContainer2.MaximumSize = new System.Drawing.Size(0, 0); - this.splitContainer2.MinimumSize = new System.Drawing.Size(0, 0); - this.splitContainer2.TabIndex = 0; - this.splitContainer2.Name = "splitContainer2"; - - // - // advancedDataGridView9 - // - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView9.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView9.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView9.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView9.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView9.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView9.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView9.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView9.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView9.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView9.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView9.EnableExcelStyleSelection = true; - this.advancedDataGridView9.EnableCellPaste = true; - this.advancedDataGridView9.AllowUserToAddRows = false; - this.advancedDataGridView9.AllowUserToDeleteRows = true; - this.advancedDataGridView9.AllowUserToOrderColumns = false; - this.advancedDataGridView9.AllowUserToResizeColumns = true; - this.advancedDataGridView9.AllowUserToResizeRows = false; - this.advancedDataGridView9.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView9.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView9.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView9.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView9.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView9.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView9.ColumnHeadersHeight = 35; - this.advancedDataGridView9.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView9.ColumnHeadersVisible = true; - this.advancedDataGridView9.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke; - this.advancedDataGridView9.EnableHeadersVisualStyles = false; - this.advancedDataGridView9.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView9.MultiSelect = true; - this.advancedDataGridView9.ReadOnly = false; - this.advancedDataGridView9.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView9.RowHeadersVisible = true; - this.advancedDataGridView9.RowHeadersWidth = 41; - this.advancedDataGridView9.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView9.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView9.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView9.ShowCellErrors = true; - this.advancedDataGridView9.ShowCellToolTips = true; - this.advancedDataGridView9.ShowEditingIcon = true; - this.advancedDataGridView9.ShowRowErrors = true; - this.advancedDataGridView9.StandardTab = false; - this.advancedDataGridView9.VirtualMode = false; - this.advancedDataGridView9.Enabled = true; - this.advancedDataGridView9.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView9.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView9.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView9.TabIndex = 0; - this.advancedDataGridView9.TabStop = true; - this.advancedDataGridView9.Name = "advancedDataGridView9"; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[0].Name = ""; - this.advancedDataGridView9.Columns[0].HeaderText = "序号"; - this.advancedDataGridView9.Columns[0].Width = 35; - this.advancedDataGridView9.Columns[0].Visible = true; - this.advancedDataGridView9.Columns[0].ReadOnly = false; - this.advancedDataGridView9.Columns[0].Frozen = true; - this.advancedDataGridView9.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; - this.advancedDataGridView9.Columns[0].DataPropertyName = "序号"; - this.advancedDataGridView9.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns[0].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[1].Name = ""; - this.advancedDataGridView9.Columns[1].HeaderText = "图号"; - this.advancedDataGridView9.Columns[1].Width = 100; - this.advancedDataGridView9.Columns[1].Visible = true; - this.advancedDataGridView9.Columns[1].ReadOnly = false; - this.advancedDataGridView9.Columns[1].Frozen = false; - this.advancedDataGridView9.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[1].DataPropertyName = "图号"; - this.advancedDataGridView9.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[2].Name = ""; - this.advancedDataGridView9.Columns[2].HeaderText = "图名"; - this.advancedDataGridView9.Columns[2].Width = 100; - this.advancedDataGridView9.Columns[2].Visible = true; - this.advancedDataGridView9.Columns[2].ReadOnly = false; - this.advancedDataGridView9.Columns[2].Frozen = false; - this.advancedDataGridView9.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[2].DataPropertyName = "图名"; - this.advancedDataGridView9.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[3].Name = ""; - this.advancedDataGridView9.Columns[3].HeaderText = "台数"; - this.advancedDataGridView9.Columns[3].Width = 35; - this.advancedDataGridView9.Columns[3].Visible = true; - this.advancedDataGridView9.Columns[3].ReadOnly = false; - this.advancedDataGridView9.Columns[3].Frozen = false; - this.advancedDataGridView9.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[3].DataPropertyName = "台数"; - this.advancedDataGridView9.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns[3].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[4].Name = ""; - this.advancedDataGridView9.Columns[4].HeaderText = "箱柜数量"; - this.advancedDataGridView9.Columns[4].Width = 35; - this.advancedDataGridView9.Columns[4].Visible = true; - this.advancedDataGridView9.Columns[4].ReadOnly = false; - this.advancedDataGridView9.Columns[4].Frozen = false; - this.advancedDataGridView9.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[4].DataPropertyName = "箱柜数量"; - this.advancedDataGridView9.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns[4].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[5].Name = ""; - this.advancedDataGridView9.Columns[5].HeaderText = "单价"; - this.advancedDataGridView9.Columns[5].Width = 100; - this.advancedDataGridView9.Columns[5].Visible = true; - this.advancedDataGridView9.Columns[5].ReadOnly = false; - this.advancedDataGridView9.Columns[5].Frozen = false; - this.advancedDataGridView9.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[5].DataPropertyName = "单价"; - this.advancedDataGridView9.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[6].Name = ""; - this.advancedDataGridView9.Columns[6].HeaderText = "总价"; - this.advancedDataGridView9.Columns[6].Width = 100; - this.advancedDataGridView9.Columns[6].Visible = true; - this.advancedDataGridView9.Columns[6].ReadOnly = false; - this.advancedDataGridView9.Columns[6].Frozen = false; - this.advancedDataGridView9.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[6].DataPropertyName = "总价"; - this.advancedDataGridView9.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[7].Name = ""; - this.advancedDataGridView9.Columns[7].HeaderText = "成本总价"; - this.advancedDataGridView9.Columns[7].Width = 100; - this.advancedDataGridView9.Columns[7].Visible = true; - this.advancedDataGridView9.Columns[7].ReadOnly = false; - this.advancedDataGridView9.Columns[7].Frozen = false; - this.advancedDataGridView9.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[7].DataPropertyName = "成本总价"; - this.advancedDataGridView9.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[8].Name = ""; - this.advancedDataGridView9.Columns[8].HeaderText = "毛利"; - this.advancedDataGridView9.Columns[8].Width = 100; - this.advancedDataGridView9.Columns[8].Visible = true; - this.advancedDataGridView9.Columns[8].ReadOnly = false; - this.advancedDataGridView9.Columns[8].Frozen = false; - this.advancedDataGridView9.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[8].DataPropertyName = "毛利"; - this.advancedDataGridView9.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView9.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView9.Columns[9].Name = ""; - this.advancedDataGridView9.Columns[9].HeaderText = "毛利率"; - this.advancedDataGridView9.Columns[9].Width = 100; - this.advancedDataGridView9.Columns[9].Visible = true; - this.advancedDataGridView9.Columns[9].ReadOnly = false; - this.advancedDataGridView9.Columns[9].Frozen = false; - this.advancedDataGridView9.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView9.Columns[9].DataPropertyName = "毛利率"; - this.advancedDataGridView9.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // splitContainer3 - // - this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.None; - this.splitContainer3.IsSplitterFixed = false; - this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; - this.splitContainer3.Panel1Collapsed = false; - this.splitContainer3.Panel2Collapsed = false; - this.splitContainer3.Panel1MinSize = 25; - this.splitContainer3.Panel2MinSize = 25; - this.splitContainer3.SplitterIncrement = 1; - this.splitContainer3.SplitterWidth = 6; - this.splitContainer3.TabStop = true; - this.splitContainer3.BackColor = System.Drawing.SystemColors.Control; - this.splitContainer3.Enabled = true; - this.splitContainer3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.splitContainer3.ForeColor = System.Drawing.SystemColors.ControlText; - this.splitContainer3.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.splitContainer3.MaximumSize = new System.Drawing.Size(0, 0); - this.splitContainer3.MinimumSize = new System.Drawing.Size(0, 0); - this.splitContainer3.TabIndex = 0; - this.splitContainer3.Name = "splitContainer3"; - - // - // advancedDataGridView4 - // - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView4.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView4.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView4.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView4.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView4.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView4.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView4.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView4.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView4.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView4.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView4.EnableExcelStyleSelection = true; - this.advancedDataGridView4.EnableCellPaste = true; - this.advancedDataGridView4.AllowUserToAddRows = false; - this.advancedDataGridView4.AllowUserToDeleteRows = true; - this.advancedDataGridView4.AllowUserToOrderColumns = false; - this.advancedDataGridView4.AllowUserToResizeColumns = true; - this.advancedDataGridView4.AllowUserToResizeRows = false; - this.advancedDataGridView4.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView4.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView4.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView4.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView4.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView4.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView4.ColumnHeadersHeight = 35; - this.advancedDataGridView4.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView4.ColumnHeadersVisible = true; - this.advancedDataGridView4.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke; - this.advancedDataGridView4.EnableHeadersVisualStyles = false; - this.advancedDataGridView4.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView4.MultiSelect = true; - this.advancedDataGridView4.ReadOnly = false; - this.advancedDataGridView4.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView4.RowHeadersVisible = true; - this.advancedDataGridView4.RowHeadersWidth = 41; - this.advancedDataGridView4.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView4.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView4.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView4.ShowCellErrors = true; - this.advancedDataGridView4.ShowCellToolTips = true; - this.advancedDataGridView4.ShowEditingIcon = true; - this.advancedDataGridView4.ShowRowErrors = true; - this.advancedDataGridView4.StandardTab = false; - this.advancedDataGridView4.VirtualMode = false; - this.advancedDataGridView4.Enabled = true; - this.advancedDataGridView4.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView4.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView4.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView4.TabIndex = 0; - this.advancedDataGridView4.TabStop = true; - this.advancedDataGridView4.Name = "advancedDataGridView4"; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[0].Name = ""; - this.advancedDataGridView4.Columns[0].HeaderText = "序号"; - this.advancedDataGridView4.Columns[0].Width = 35; - this.advancedDataGridView4.Columns[0].Visible = true; - this.advancedDataGridView4.Columns[0].ReadOnly = false; - this.advancedDataGridView4.Columns[0].Frozen = false; - this.advancedDataGridView4.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[0].DataPropertyName = "序号"; - this.advancedDataGridView4.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns[0].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[1].Name = ""; - this.advancedDataGridView4.Columns[1].HeaderText = "箱号"; - this.advancedDataGridView4.Columns[1].Width = 150; - this.advancedDataGridView4.Columns[1].Visible = true; - this.advancedDataGridView4.Columns[1].ReadOnly = false; - this.advancedDataGridView4.Columns[1].Frozen = false; - this.advancedDataGridView4.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[1].DataPropertyName = "箱号"; - this.advancedDataGridView4.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[2].Name = ""; - this.advancedDataGridView4.Columns[2].HeaderText = "型号"; - this.advancedDataGridView4.Columns[2].Width = 150; - this.advancedDataGridView4.Columns[2].Visible = true; - this.advancedDataGridView4.Columns[2].ReadOnly = false; - this.advancedDataGridView4.Columns[2].Frozen = false; - this.advancedDataGridView4.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[2].DataPropertyName = "型号"; - this.advancedDataGridView4.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[3].Name = ""; - this.advancedDataGridView4.Columns[3].HeaderText = "规格"; - this.advancedDataGridView4.Columns[3].Width = 150; - this.advancedDataGridView4.Columns[3].Visible = true; - this.advancedDataGridView4.Columns[3].ReadOnly = false; - this.advancedDataGridView4.Columns[3].Frozen = false; - this.advancedDataGridView4.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[3].DataPropertyName = "规格"; - this.advancedDataGridView4.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[4].Name = ""; - this.advancedDataGridView4.Columns[4].HeaderText = "单位"; - this.advancedDataGridView4.Columns[4].Width = 35; - this.advancedDataGridView4.Columns[4].Visible = true; - this.advancedDataGridView4.Columns[4].ReadOnly = false; - this.advancedDataGridView4.Columns[4].Frozen = false; - this.advancedDataGridView4.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[4].DataPropertyName = "单位"; - this.advancedDataGridView4.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns[4].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[5].Name = ""; - this.advancedDataGridView4.Columns[5].HeaderText = "数量"; - this.advancedDataGridView4.Columns[5].Width = 45; - this.advancedDataGridView4.Columns[5].Visible = true; - this.advancedDataGridView4.Columns[5].ReadOnly = false; - this.advancedDataGridView4.Columns[5].Frozen = false; - this.advancedDataGridView4.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[5].DataPropertyName = "数量"; - this.advancedDataGridView4.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns[5].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[6].Name = ""; - this.advancedDataGridView4.Columns[6].HeaderText = "单台成本"; - this.advancedDataGridView4.Columns[6].Width = 100; - this.advancedDataGridView4.Columns[6].Visible = true; - this.advancedDataGridView4.Columns[6].ReadOnly = false; - this.advancedDataGridView4.Columns[6].Frozen = false; - this.advancedDataGridView4.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[6].DataPropertyName = "单台成本"; - this.advancedDataGridView4.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[7].Name = ""; - this.advancedDataGridView4.Columns[7].HeaderText = "成本价"; - this.advancedDataGridView4.Columns[7].Width = 100; - this.advancedDataGridView4.Columns[7].Visible = true; - this.advancedDataGridView4.Columns[7].ReadOnly = false; - this.advancedDataGridView4.Columns[7].Frozen = false; - this.advancedDataGridView4.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[7].DataPropertyName = "成本价"; - this.advancedDataGridView4.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[8].Name = ""; - this.advancedDataGridView4.Columns[8].HeaderText = "单台报出"; - this.advancedDataGridView4.Columns[8].Width = 100; - this.advancedDataGridView4.Columns[8].Visible = true; - this.advancedDataGridView4.Columns[8].ReadOnly = false; - this.advancedDataGridView4.Columns[8].Frozen = false; - this.advancedDataGridView4.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[8].DataPropertyName = "单台报出"; - this.advancedDataGridView4.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[9].Name = ""; - this.advancedDataGridView4.Columns[9].HeaderText = "报出价"; - this.advancedDataGridView4.Columns[9].Width = 100; - this.advancedDataGridView4.Columns[9].Visible = true; - this.advancedDataGridView4.Columns[9].ReadOnly = false; - this.advancedDataGridView4.Columns[9].Frozen = false; - this.advancedDataGridView4.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[9].DataPropertyName = "报出价"; - this.advancedDataGridView4.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[10].Name = ""; - this.advancedDataGridView4.Columns[10].HeaderText = "利润"; - this.advancedDataGridView4.Columns[10].Width = 100; - this.advancedDataGridView4.Columns[10].Visible = true; - this.advancedDataGridView4.Columns[10].ReadOnly = false; - this.advancedDataGridView4.Columns[10].Frozen = false; - this.advancedDataGridView4.Columns[10].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[10].DataPropertyName = "利润"; - this.advancedDataGridView4.Columns[10].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[11].Name = ""; - this.advancedDataGridView4.Columns[11].HeaderText = "利润率"; - this.advancedDataGridView4.Columns[11].Width = 100; - this.advancedDataGridView4.Columns[11].Visible = true; - this.advancedDataGridView4.Columns[11].ReadOnly = false; - this.advancedDataGridView4.Columns[11].Frozen = false; - this.advancedDataGridView4.Columns[11].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[11].DataPropertyName = "利润率"; - this.advancedDataGridView4.Columns[11].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[12].Name = ""; - this.advancedDataGridView4.Columns[12].HeaderText = "毛利率"; - this.advancedDataGridView4.Columns[12].Width = 100; - this.advancedDataGridView4.Columns[12].Visible = true; - this.advancedDataGridView4.Columns[12].ReadOnly = false; - this.advancedDataGridView4.Columns[12].Frozen = false; - this.advancedDataGridView4.Columns[12].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[12].DataPropertyName = "毛利率"; - this.advancedDataGridView4.Columns[12].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[13].Name = ""; - this.advancedDataGridView4.Columns[13].HeaderText = "箱柜类型"; - this.advancedDataGridView4.Columns[13].Width = 100; - this.advancedDataGridView4.Columns[13].Visible = true; - this.advancedDataGridView4.Columns[13].ReadOnly = false; - this.advancedDataGridView4.Columns[13].Frozen = false; - this.advancedDataGridView4.Columns[13].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[13].DataPropertyName = "箱柜类型"; - this.advancedDataGridView4.Columns[13].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[14].Name = ""; - this.advancedDataGridView4.Columns[14].HeaderText = "备注"; - this.advancedDataGridView4.Columns[14].Width = 100; - this.advancedDataGridView4.Columns[14].Visible = true; - this.advancedDataGridView4.Columns[14].ReadOnly = false; - this.advancedDataGridView4.Columns[14].Frozen = false; - this.advancedDataGridView4.Columns[14].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[14].DataPropertyName = "备注"; - this.advancedDataGridView4.Columns[14].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView4.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView4.Columns[15].Name = ""; - this.advancedDataGridView4.Columns[15].HeaderText = "图纸"; - this.advancedDataGridView4.Columns[15].Width = 100; - this.advancedDataGridView4.Columns[15].Visible = true; - this.advancedDataGridView4.Columns[15].ReadOnly = false; - this.advancedDataGridView4.Columns[15].Frozen = false; - this.advancedDataGridView4.Columns[15].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView4.Columns[15].DataPropertyName = "图纸"; - this.advancedDataGridView4.Columns[15].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // advancedDataGridView5 - // - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView5.ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.DefaultCellStyle.BackColor = System.Drawing.SystemColors.Window; - this.advancedDataGridView5.DefaultCellStyle.ForeColor = System.Drawing.SystemColors.ControlText; - this.advancedDataGridView5.DefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView5.DefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView5.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView5.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.advancedDataGridView5.DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.BackColor = System.Drawing.SystemColors.Control; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 1); - this.advancedDataGridView5.RowHeadersDefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.advancedDataGridView5.RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.advancedDataGridView5.Dock = System.Windows.Forms.DockStyle.Fill; - this.advancedDataGridView5.EnableExcelStyleSelection = true; - this.advancedDataGridView5.EnableCellPaste = true; - this.advancedDataGridView5.AllowUserToAddRows = false; - this.advancedDataGridView5.AllowUserToDeleteRows = true; - this.advancedDataGridView5.AllowUserToOrderColumns = false; - this.advancedDataGridView5.AllowUserToResizeColumns = true; - this.advancedDataGridView5.AllowUserToResizeRows = false; - this.advancedDataGridView5.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.None; - this.advancedDataGridView5.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None; - this.advancedDataGridView5.BackgroundColor = System.Drawing.Color.White; - this.advancedDataGridView5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.advancedDataGridView5.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Single; - this.advancedDataGridView5.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithAutoHeaderText; - this.advancedDataGridView5.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView5.ColumnHeadersHeight = 35; - this.advancedDataGridView5.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing; - this.advancedDataGridView5.ColumnHeadersVisible = true; - this.advancedDataGridView5.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke; - this.advancedDataGridView5.EnableHeadersVisualStyles = false; - this.advancedDataGridView5.GridColor = System.Drawing.SystemColors.ControlDark; - this.advancedDataGridView5.MultiSelect = true; - this.advancedDataGridView5.ReadOnly = false; - this.advancedDataGridView5.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised; - this.advancedDataGridView5.RowHeadersVisible = true; - this.advancedDataGridView5.RowHeadersWidth = 41; - this.advancedDataGridView5.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing; - this.advancedDataGridView5.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.advancedDataGridView5.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.advancedDataGridView5.ShowCellErrors = true; - this.advancedDataGridView5.ShowCellToolTips = true; - this.advancedDataGridView5.ShowEditingIcon = true; - this.advancedDataGridView5.ShowRowErrors = true; - this.advancedDataGridView5.StandardTab = false; - this.advancedDataGridView5.VirtualMode = false; - this.advancedDataGridView5.Enabled = true; - this.advancedDataGridView5.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.advancedDataGridView5.MaximumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView5.MinimumSize = new System.Drawing.Size(0, 0); - this.advancedDataGridView5.TabIndex = 0; - this.advancedDataGridView5.TabStop = true; - this.advancedDataGridView5.Name = "advancedDataGridView5"; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[0].Name = ""; - this.advancedDataGridView5.Columns[0].HeaderText = "序号"; - this.advancedDataGridView5.Columns[0].Width = 35; - this.advancedDataGridView5.Columns[0].Visible = true; - this.advancedDataGridView5.Columns[0].ReadOnly = false; - this.advancedDataGridView5.Columns[0].Frozen = false; - this.advancedDataGridView5.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[0].DataPropertyName = "序号"; - this.advancedDataGridView5.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns[0].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[1].Name = ""; - this.advancedDataGridView5.Columns[1].HeaderText = "元件名称"; - this.advancedDataGridView5.Columns[1].Width = 150; - this.advancedDataGridView5.Columns[1].Visible = true; - this.advancedDataGridView5.Columns[1].ReadOnly = false; - this.advancedDataGridView5.Columns[1].Frozen = false; - this.advancedDataGridView5.Columns[1].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[1].DataPropertyName = "元件名称"; - this.advancedDataGridView5.Columns[1].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[2].Name = ""; - this.advancedDataGridView5.Columns[2].HeaderText = "规格"; - this.advancedDataGridView5.Columns[2].Width = 150; - this.advancedDataGridView5.Columns[2].Visible = true; - this.advancedDataGridView5.Columns[2].ReadOnly = false; - this.advancedDataGridView5.Columns[2].Frozen = false; - this.advancedDataGridView5.Columns[2].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[2].DataPropertyName = "规格"; - this.advancedDataGridView5.Columns[2].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[3].Name = ""; - this.advancedDataGridView5.Columns[3].HeaderText = "单位"; - this.advancedDataGridView5.Columns[3].Width = 35; - this.advancedDataGridView5.Columns[3].Visible = true; - this.advancedDataGridView5.Columns[3].ReadOnly = false; - this.advancedDataGridView5.Columns[3].Frozen = false; - this.advancedDataGridView5.Columns[3].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[3].DataPropertyName = "单位"; - this.advancedDataGridView5.Columns[3].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns[3].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[4].Name = ""; - this.advancedDataGridView5.Columns[4].HeaderText = "数量"; - this.advancedDataGridView5.Columns[4].Width = 40; - this.advancedDataGridView5.Columns[4].Visible = true; - this.advancedDataGridView5.Columns[4].ReadOnly = false; - this.advancedDataGridView5.Columns[4].Frozen = false; - this.advancedDataGridView5.Columns[4].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[4].DataPropertyName = "数量"; - this.advancedDataGridView5.Columns[4].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns[4].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[5].Name = ""; - this.advancedDataGridView5.Columns[5].HeaderText = "表价"; - this.advancedDataGridView5.Columns[5].Width = 100; - this.advancedDataGridView5.Columns[5].Visible = true; - this.advancedDataGridView5.Columns[5].ReadOnly = false; - this.advancedDataGridView5.Columns[5].Frozen = false; - this.advancedDataGridView5.Columns[5].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[5].DataPropertyName = "表价"; - this.advancedDataGridView5.Columns[5].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[6].Name = ""; - this.advancedDataGridView5.Columns[6].HeaderText = "采购单价"; - this.advancedDataGridView5.Columns[6].Width = 100; - this.advancedDataGridView5.Columns[6].Visible = true; - this.advancedDataGridView5.Columns[6].ReadOnly = false; - this.advancedDataGridView5.Columns[6].Frozen = false; - this.advancedDataGridView5.Columns[6].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[6].DataPropertyName = "采购单价"; - this.advancedDataGridView5.Columns[6].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[7].Name = ""; - this.advancedDataGridView5.Columns[7].HeaderText = "采购系数"; - this.advancedDataGridView5.Columns[7].Width = 100; - this.advancedDataGridView5.Columns[7].Visible = true; - this.advancedDataGridView5.Columns[7].ReadOnly = false; - this.advancedDataGridView5.Columns[7].Frozen = false; - this.advancedDataGridView5.Columns[7].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[7].DataPropertyName = "采购系数"; - this.advancedDataGridView5.Columns[7].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[8].Name = ""; - this.advancedDataGridView5.Columns[8].HeaderText = "采购价"; - this.advancedDataGridView5.Columns[8].Width = 100; - this.advancedDataGridView5.Columns[8].Visible = true; - this.advancedDataGridView5.Columns[8].ReadOnly = false; - this.advancedDataGridView5.Columns[8].Frozen = false; - this.advancedDataGridView5.Columns[8].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[8].DataPropertyName = "采购价"; - this.advancedDataGridView5.Columns[8].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[9].Name = ""; - this.advancedDataGridView5.Columns[9].HeaderText = "报出单价"; - this.advancedDataGridView5.Columns[9].Width = 100; - this.advancedDataGridView5.Columns[9].Visible = true; - this.advancedDataGridView5.Columns[9].ReadOnly = false; - this.advancedDataGridView5.Columns[9].Frozen = false; - this.advancedDataGridView5.Columns[9].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[9].DataPropertyName = "报出单价"; - this.advancedDataGridView5.Columns[9].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[10].Name = ""; - this.advancedDataGridView5.Columns[10].HeaderText = "报出系数"; - this.advancedDataGridView5.Columns[10].Width = 100; - this.advancedDataGridView5.Columns[10].Visible = true; - this.advancedDataGridView5.Columns[10].ReadOnly = false; - this.advancedDataGridView5.Columns[10].Frozen = false; - this.advancedDataGridView5.Columns[10].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[10].DataPropertyName = "报出系数"; - this.advancedDataGridView5.Columns[10].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[11].Name = ""; - this.advancedDataGridView5.Columns[11].HeaderText = "报出价"; - this.advancedDataGridView5.Columns[11].Width = 100; - this.advancedDataGridView5.Columns[11].Visible = true; - this.advancedDataGridView5.Columns[11].ReadOnly = false; - this.advancedDataGridView5.Columns[11].Frozen = false; - this.advancedDataGridView5.Columns[11].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[11].DataPropertyName = "报出价"; - this.advancedDataGridView5.Columns[11].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[12].Name = ""; - this.advancedDataGridView5.Columns[12].HeaderText = "图纸规格"; - this.advancedDataGridView5.Columns[12].Width = 100; - this.advancedDataGridView5.Columns[12].Visible = true; - this.advancedDataGridView5.Columns[12].ReadOnly = false; - this.advancedDataGridView5.Columns[12].Frozen = false; - this.advancedDataGridView5.Columns[12].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[12].DataPropertyName = "图纸规格"; - this.advancedDataGridView5.Columns[12].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[13].Name = ""; - this.advancedDataGridView5.Columns[13].HeaderText = "品牌"; - this.advancedDataGridView5.Columns[13].Width = 100; - this.advancedDataGridView5.Columns[13].Visible = true; - this.advancedDataGridView5.Columns[13].ReadOnly = false; - this.advancedDataGridView5.Columns[13].Frozen = false; - this.advancedDataGridView5.Columns[13].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[13].DataPropertyName = "品牌"; - this.advancedDataGridView5.Columns[13].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[14].Name = ""; - this.advancedDataGridView5.Columns[14].HeaderText = "系列"; - this.advancedDataGridView5.Columns[14].Width = 100; - this.advancedDataGridView5.Columns[14].Visible = true; - this.advancedDataGridView5.Columns[14].ReadOnly = false; - this.advancedDataGridView5.Columns[14].Frozen = false; - this.advancedDataGridView5.Columns[14].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[14].DataPropertyName = "系列"; - this.advancedDataGridView5.Columns[14].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[15].Name = ""; - this.advancedDataGridView5.Columns[15].HeaderText = "类型"; - this.advancedDataGridView5.Columns[15].Width = 100; - this.advancedDataGridView5.Columns[15].Visible = true; - this.advancedDataGridView5.Columns[15].ReadOnly = false; - this.advancedDataGridView5.Columns[15].Frozen = false; - this.advancedDataGridView5.Columns[15].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[15].DataPropertyName = "类型"; - this.advancedDataGridView5.Columns[15].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - this.advancedDataGridView5.Columns.Add(new System.Windows.Forms.DataGridViewTextBoxColumn()); - this.advancedDataGridView5.Columns[16].Name = ""; - this.advancedDataGridView5.Columns[16].HeaderText = "备注"; - this.advancedDataGridView5.Columns[16].Width = 100; - this.advancedDataGridView5.Columns[16].Visible = true; - this.advancedDataGridView5.Columns[16].ReadOnly = false; - this.advancedDataGridView5.Columns[16].Frozen = false; - this.advancedDataGridView5.Columns[16].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet; - this.advancedDataGridView5.Columns[16].DataPropertyName = "备注"; - this.advancedDataGridView5.Columns[16].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; - - // - // toolStrip1 - // - this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Top; - this.toolStrip1.AutoSize = true; - this.toolStrip1.AllowItemReorder = false; - this.toolStrip1.AllowMerge = true; - this.toolStrip1.BackColor = System.Drawing.SystemColors.Control; - this.toolStrip1.CanOverflow = true; - this.toolStrip1.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Visible; - this.toolStrip1.GripMargin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.toolStrip1.ImageScalingSize = new System.Drawing.Size(16, 16); - this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; - this.toolStrip1.Stretch = false; - this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode; - this.toolStrip1.ShowItemToolTips = true; - this.toolStrip1.TabStop = false; - this.toolStrip1.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal; - this.toolStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.toolStrip1.Enabled = true; - this.toolStrip1.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.toolStrip1.MaximumSize = new System.Drawing.Size(0, 0); - this.toolStrip1.MinimumSize = new System.Drawing.Size(0, 0); - this.toolStrip1.TabIndex = 1; - this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0); - this.toolStrip1.Size = new System.Drawing.Size(487, 25); - this.toolStrip1.Location = new System.Drawing.Point(0, 0); - this.toolStrip1.Name = "toolStrip1"; - - // - // toolStripButton1 - // - this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton1.ToolTipText = "导出数据"; - this.toolStripButton1.Size = new System.Drawing.Size(60, 22); - this.toolStripButton1.Text = "导出数据"; - this.toolStripButton1.Name = "toolStripButton1"; - - // - // toolStripButton5 - // - this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton5.ToolTipText = "新建项目"; - this.toolStripButton5.Size = new System.Drawing.Size(60, 22); - this.toolStripButton5.Text = "新建项目"; - this.toolStripButton5.Name = "toolStripButton5"; - - // - // toolStripButton6 - // - this.toolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton6.ToolTipText = "删除项目"; - this.toolStripButton6.Size = new System.Drawing.Size(60, 22); - this.toolStripButton6.Text = "删除项目"; - this.toolStripButton6.Name = "toolStripButton6"; - - // - // toolStripButton2 - // - this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton2.ToolTipText = "扒图号"; - this.toolStripButton2.Size = new System.Drawing.Size(48, 22); - this.toolStripButton2.Text = "扒图号"; - this.toolStripButton2.Name = "toolStripButton2"; - - // - // toolStripButton3 - // - this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton3.ToolTipText = "扒箱号"; - this.toolStripButton3.Size = new System.Drawing.Size(48, 22); - this.toolStripButton3.Text = "扒箱号"; - this.toolStripButton3.Name = "toolStripButton3"; - - // - // toolStripButton4 - // - this.toolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton4.ToolTipText = "扒元件"; - this.toolStripButton4.Size = new System.Drawing.Size(48, 22); - this.toolStripButton4.Text = "扒元件"; - this.toolStripButton4.Name = "toolStripButton4"; - - // - // toolStripButton7 - // - this.toolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton7.Size = new System.Drawing.Size(36, 22); - this.toolStripButton7.Text = "设置"; - this.toolStripButton7.Name = "toolStripButton7"; - - // Form3 - this.Controls.AddRange(new System.Windows.Forms.Control[] { - this.tabControl2, - this.toolStrip1, - }); - // tabControl2 - this.tabControl2.Controls.AddRange(new System.Windows.Forms.Control[] { - this.tabPage3, - this.tabPage4, - }); - // tabPage3 - this.tabPage3.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView6, - this.panel1, - }); - // panel1 - this.panel1.Controls.AddRange(new System.Windows.Forms.Control[] { - this.button28, - this.textBox1, - this.comboBox2, - }); - // tabPage4 - this.tabPage4.Controls.AddRange(new System.Windows.Forms.Control[] { - this.splitContainer2, - }); - // Panel1 - this.splitContainer2.Panel1.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView9, - }); - // Panel2 - this.splitContainer2.Panel2.Controls.AddRange(new System.Windows.Forms.Control[] { - this.splitContainer3, - }); - // Panel1 - this.splitContainer3.Panel1.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView4, - }); - // Panel2 - this.splitContainer3.Panel2.Controls.AddRange(new System.Windows.Forms.Control[] { - this.advancedDataGridView5, - }); - // toolStrip1 - this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripButton1, - this.toolStripButton5, - this.toolStripButton6, - this.toolStripButton2, - this.toolStripButton3, - this.toolStripButton4, - this.toolStripButton7, - }); - // - // Form3 - // - this.Dock = System.Windows.Forms.DockStyle.None; - this.AutoScroll = false; - this.AutoSize = false; - this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; - this.BackColor = System.Drawing.SystemColors.Control; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.ControlBox = true; - this.HelpButton = false; - this.IsMdiContainer = false; - this.KeyPreview = false; - this.MaximumSize = new System.Drawing.Size(0, 0); - this.MinimumSize = new System.Drawing.Size(0, 0); - this.MaximizeBox = true; - this.MinimizeBox = true; - this.Opacity = 1; - this.RightToLeftLayout = false; - this.ShowInTaskbar = true; - this.ShowIcon = true; - this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Auto; - this.StartPosition = System.Windows.Forms.FormStartPosition.WindowsDefaultLocation; - this.TopMost = false; - this.WindowState = System.Windows.Forms.FormWindowState.Normal; - this.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.Enabled = true; - this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.ForeColor = System.Drawing.SystemColors.ControlText; - this.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.Size = new System.Drawing.Size(503, 785); - this.Text = "Form3"; - this.Name = "Form3"; - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView6)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView9)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView4)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.advancedDataGridView5)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - this.splitContainer2.SplitterDistance = 173; - this.splitContainer3.SplitterDistance = 239; - - // === DataGridView Excel 风格选中效果 === - - // === SQLite 设计时数据绑定(由设计器注入) === - // 在 Form.Load 事件中加载所有绑定数据 - this.Load += (sender, e) => LoadAllSqliteData(); - } - - #endregion - - private System.Windows.Forms.TabControl tabControl2; - private System.Windows.Forms.TabPage tabPage3; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView6; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button button28; - private System.Windows.Forms.TextBox textBox1; - private System.Windows.Forms.ComboBox comboBox2; - private System.Windows.Forms.TabPage tabPage4; - private System.Windows.Forms.SplitContainer splitContainer2; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView9; - private System.Windows.Forms.SplitContainer splitContainer3; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView4; - private Zuby.ADGV.AdvancedDataGridView advancedDataGridView5; - private System.Windows.Forms.ToolStrip toolStrip1; - private System.Windows.Forms.ToolStripButton toolStripButton1; - private System.Windows.Forms.ToolStripButton toolStripButton5; - private System.Windows.Forms.ToolStripButton toolStripButton6; - private System.Windows.Forms.ToolStripButton toolStripButton2; - private System.Windows.Forms.ToolStripButton toolStripButton3; - private System.Windows.Forms.ToolStripButton toolStripButton4; - private System.Windows.Forms.ToolStripButton toolStripButton7; - - /// 加载所有 SQLite 设计数据绑定。 - private void LoadAllSqliteData() - { - if (!System.Environment.Is64BitProcess) - { - System.Windows.Forms.MessageBox.Show( - "当前程序以 32 位进程运行,但 System.Data.SQLite.dll 是 64 位(x64)。\n" + - "请用 /platform:x64 编译本程序(运行同目录下 build.bat 即可)。", - "SQLite 加载失败", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); - return; - } - try { LoadSqliteData_advancedDataGridView6(); } catch (System.Exception ex_advancedDataGridView6) { System.Windows.Forms.MessageBox.Show("加载数据失败 (advancedDataGridView6): " + ex_advancedDataGridView6.Message); } - } - - /// 为 advancedDataGridView6 加载 SQLite 数据(由设计器生成)。 - private void LoadSqliteData_advancedDataGridView6() - { - // ★ 数据库路径:优先用插件真实目录(_baseDir 在 Form3.cs,注册表/CodeBase 解析), - // 在 CAD 中加载时 BaseDirectory 指向 CAD 安装目录会找不到库 - string dbPath = System.IO.Path.Combine( - GetPluginBaseDirForUi(), @"sjk\advancedDataGridView6Table.db"); - if (!System.IO.File.Exists(dbPath)) - { - // ★ 静默跳过(不弹窗):构造函数里的 Load 事件已用正确路径重新加载 - System.Diagnostics.Debug.WriteLine("找不到数据库文件: " + dbPath); - return; - } - - string connStr = "Data Source=" + dbPath + ";Version=3;busy_timeout=3000;"; - var table = new System.Data.DataTable(); - using (var conn = new System.Data.SQLite.SQLiteConnection(connStr)) - { - conn.Open(); - string sql = @"SELECT * FROM advancedDataGridView6Table"; - using (var adapter = new System.Data.SQLite.SQLiteDataAdapter(sql, conn)) - { - adapter.Fill(table); - } - } - - this.advancedDataGridView6.AutoGenerateColumns = false; - // KeepCustomColumns=true:设计器中自定义的列不会被覆盖, - // 数据库列通过 DataPropertyName 与控件列关联。 - // 若列名与数据库列名相同,运行时会自动绑定数据。 - this.advancedDataGridView6.DataSource = table; - } - - /// - /// ui.cs 侧获取插件目录:复用 Form3.cs 的 _baseDir - /// (partial 类同字段;_baseDir 在 Form3.cs 中由注册表/CodeBase 解析) - /// - private string GetPluginBaseDirForUi() - { - return _baseDir; - } - } -} diff --git a/cadbt/cadbt/cadcj/PaTextSelector.cs b/cadbt/cadbt/cadcj/PaTextSelector.cs deleted file mode 100644 index 02268fc..0000000 --- a/cadbt/cadbt/cadcj/PaTextSelector.cs +++ /dev/null @@ -1,830 +0,0 @@ -// ============================================================ -// 扒图号/扒箱号/扒元件 - CAD文本框选交互 -// · 直接框选一次完成(无需点完成按钮) -// · 只框选 DBText/MText(线条自动过滤) -// · 不改文字颜色,而是在每个文字周围画彩色矩形框 -// (图号=红色框, 箱号=绿色框, 元件=蓝色框) -// · 清除时删除所有彩色矩形框 -// ============================================================ -using System; -using System.Collections.Generic; -using Autodesk.AutoCAD.DatabaseServices; -using Autodesk.AutoCAD.EditorInput; -using Autodesk.AutoCAD.ApplicationServices; -using Autodesk.AutoCAD.Geometry; -using Autodesk.AutoCAD.Colors; -using AcAp = Autodesk.AutoCAD.ApplicationServices.Application; - -namespace MyApp -{ - /// - /// 扒数据模式:图号/箱号/元件 - /// - public enum PaMode - { - Tuhao, // 扒图号 - Xianghao, // 扒箱号 - Yuanjian // 扒元件 - } - - /// - /// 扒图结果:一条文本 + 它对应的彩色框的 Handle(句柄字符串) - /// 用于关联表格数据行与 CAD 框实体,实现点击行定位、删除行删框。 - /// ★ TextHandle:源文本实体自身的 Handle,用于判断"是否同一个文本" - /// (不同位置的相同内容文本 Handle 不同,不算重复)。 - /// - public class PaTextResult - { - public string Text; - public string FrameHandle; - public string TextHandle = ""; - } - - /// - /// CAD 文本框选交互:框选一次即完成,在文字周围画彩色矩形框(不改文字颜色)。 - /// - public static class PaTextSelector - { - // 三种模式对应不同的矩形框颜色(ACI:3=绿,4=青,1=红) - private const short TuhaoColorIndex = 3; // 图号=绿 - private const short XianghaoColorIndex = 4; // 箱号=青 - private const short YuanjianColorIndex = 1; // 元件=红 - - // 矩形框图层名(便于批量清除) - public const string PaLayerName = "__CADCJ_PA_FRAME"; - - /// - /// 连续扒数据事件:每次框选完成(松开鼠标)就触发一次,把这一批文本+框Handle送给调用方。 - /// 调用方在 Form3 里把数据插入到表格,然后控制流回到 PickTexts 继续下一次框选。 - /// - public static event System.Action> BatchTextsPicked; - - /// - /// 连续框选模式:用户点一次按钮进入,可以连续框选多次,每次框选立即送出一批文本。 - /// 按回车/空格完成当前批次,ESC 退出连续模式。 - /// 方向决定行为: - /// · 左上→右下(正向框选):每个文本一条记录 - /// · 右下→左上(反向框选,CAD里称为"交叉框选"):多条文本合并为一条 - /// - /// 扒数据模式(决定矩形框颜色) - public static void PickTextsContinuous(PaMode mode) - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc == null) return; - var ed = doc.Editor; - - // ★ 强制开启透明度显示(TRANSPARENCYDISPLAY=1) - // 否则 Hatch.Transparency 在某些电脑上不生效,蒙版显示为不透明 - try { AcAp.SetSystemVariable("TRANSPARENCYDISPLAY", 1); } catch { } - - // ★ 当前模式(允许右键切换,所以用变量保存当前模式) - PaMode currentMode = mode; - - try - { - var typeValues = new TypedValue[] - { - new TypedValue(-4, "") - }; - var filter = new SelectionFilter(typeValues); - - // ★ 连续循环:每次框选完立即触发事件,直到用户按 ESC - while (true) - { - // 根据当前模式获取颜色和名称 - short colorIndex; - string modeName; - switch (currentMode) - { - case PaMode.Tuhao: colorIndex = TuhaoColorIndex; modeName = "图号"; break; - case PaMode.Xianghao: colorIndex = XianghaoColorIndex; modeName = "箱号"; break; - default: colorIndex = YuanjianColorIndex; modeName = "元件"; break; - } - - // 第一角点 - // ★ AllowNone=true:右键会返回 None,用来切换模式;ESC 返回 Cancel 退出 - var po1 = new PromptPointOptions("\n框选【" + modeName + "】起点(右键切换模式,ESC结束): "); - po1.AllowNone = true; - var pres1 = ed.GetPoint(po1); - if (pres1.Status == PromptStatus.Cancel) break; // ESC 退出 - if (pres1.Status == PromptStatus.None) - { - // ★ 右键:切换到下一个模式(图号→箱号→元件→退出) - PaMode next = GetNextMode(currentMode); - if (next == currentMode) - { - // 元件模式右键 → 退出 - ed.WriteMessage("\n[扒数据] 已退出连续模式。"); - break; - } - currentMode = next; - ed.WriteMessage("\n[扒数据] 切换到【" + GetModeName(currentMode) + "】模式。"); - continue; - } - if (pres1.Status != PromptStatus.OK) break; - Point3d pt1 = pres1.Value; - - // 对角点 - // ★ AllowNone=true:右键也允许切换模式(回到第一角点重新开始) - var co = new PromptCornerOptions("\n对角点: ", pt1); - co.AllowNone = true; - var cres = ed.GetCorner(co); - if (cres.Status == PromptStatus.Cancel) break; // ESC 退出 - if (cres.Status == PromptStatus.None) - { - // ★ 右键:切换到下一个模式,回到第一角点 - PaMode next = GetNextMode(currentMode); - if (next == currentMode) - { - ed.WriteMessage("\n[扒数据] 已退出连续模式。"); - break; - } - currentMode = next; - ed.WriteMessage("\n[扒数据] 切换到【" + GetModeName(currentMode) + "】模式。"); - continue; - } - if (cres.Status != PromptStatus.OK) break; - Point3d pt2 = cres.Value; - - // ★ 关键:判断方向(任意一项反向即为"交叉框选"=合并模式) - // pt1.X > pt2.X = 从右往左框选(pt1 在 pt2 右边) - // pt1.Y < pt2.Y = 从下往上框选(pt1 在 pt2 下方) - // 任一条件满足都视为反向框选 → 多文本合并为一条 - bool isCrossing = (pt1.X > pt2.X) || (pt1.Y < pt2.Y); - - double minX = Math.Min(pt1.X, pt2.X); - double maxX = Math.Max(pt1.X, pt2.X); - double minY = Math.Min(pt1.Y, pt2.Y); - double maxY = Math.Max(pt1.Y, pt2.Y); - Point3d minPt = new Point3d(minX, minY, 0); - Point3d maxPt = new Point3d(maxX, maxY, 0); - - // ★ 统一用交叉窗口选择:只要框碰到文字(部分重叠)即选中, - // 不再要求把文字完全框住(旧版正向框选用 SelectWindow 必须全包,漏选严重)。 - // 框选方向只决定业务模式(正向=逐条,反向=合并),不再影响选择方式。 - PromptSelectionResult res = ed.SelectCrossingWindow(minPt, maxPt, filter); - - if (res.Status != PromptStatus.OK) continue; // 这一次没选中,继续下一次 - ObjectId[] ids = res.Value.GetObjectIds(); - if (ids.Length == 0) continue; - - // 收集文本 - var items = new List(); - using (var tr = doc.Database.TransactionManager.StartTransaction()) - { - foreach (ObjectId id in ids) - { - var ent = tr.GetObject(id, OpenMode.ForRead) as Entity; - if (ent == null) continue; - string text = ""; - Point3d pos = Point3d.Origin; - Extents3d? bounds = null; - var dt = ent as DBText; - var mt = ent as MText; - if (dt != null) - { - text = dt.TextString; - try - { - // ★ 用 CAD 自身的 GeometricExtents 获取文本框边界 - // 宽度通常准确,高度包含字体预留空间偏大 - // 所以高度用字高重新估算,宽度用 GeometricExtents - bounds = dt.GeometricExtents; - if (bounds.HasValue) - { - double h = dt.Height; - if (h > 0) - { - // ★ 宽度:直接用 GeometricExtents 的宽度(CAD 自身文本框宽度) - double left = bounds.Value.MinPoint.X; - double right = bounds.Value.MaxPoint.X; - // ★ 高度:用字高紧凑估算(底部=baseline下0.2h,顶部=baseline上1.0h) - double bottom = dt.Position.Y - h * 0.2; - double top = dt.Position.Y + h * 1.0; - bounds = new Extents3d( - new Point3d(left, bottom, 0), - new Point3d(right, top, 0)); - } - } - } - catch { } - // ★ 用文字中心点作为排序基准 - if (bounds.HasValue) - pos = new Point3d( - (bounds.Value.MinPoint.X + bounds.Value.MaxPoint.X) / 2.0, - (bounds.Value.MinPoint.Y + bounds.Value.MaxPoint.Y) / 2.0, - 0); - else - pos = dt.Position; - } - else if (mt != null) - { - text = mt.Text; - try { bounds = mt.GeometricExtents; } catch { } - if (bounds.HasValue) - pos = new Point3d( - (bounds.Value.MinPoint.X + bounds.Value.MaxPoint.X) / 2.0, - (bounds.Value.MinPoint.Y + bounds.Value.MaxPoint.Y) / 2.0, - 0); - else - pos = mt.Location; - } - if (!string.IsNullOrEmpty(text)) - { - items.Add(new TextItem - { - Text = text.Trim(), - Position = pos, - Bounds = bounds, - ObjectId = id, - TextHandle = ent.Handle.ToString() - }); - } - } - tr.Commit(); - } - - if (items.Count == 0) continue; - - // ★ 按列分组排序:先从左到右分列,列内从上到下 - // 用户需求示例:1在上 2在下(左列) 3在上 4在下(右列) - // 期望顺序:1、2、3、4(先左列从上到下,再右列从上到下) - // 算法: - // 1. 按X左边界升序 - // 2. 扫描分列:X范围有重叠的归为同一列(垂直方向对齐的文字) - // 3. 每列内按Y降序(上在前) - // 4. 列间按X升序(左在前)合并 - { - System.Func getLeft = it => - it.Bounds.HasValue ? it.Bounds.Value.MinPoint.X : it.Position.X; - System.Func getRight = it => - it.Bounds.HasValue ? it.Bounds.Value.MaxPoint.X : it.Position.X; - System.Func getCenterY = it => - it.Bounds.HasValue ? (it.Bounds.Value.MinPoint.Y + it.Bounds.Value.MaxPoint.Y) / 2.0 : it.Position.Y; - - // 1. 按X左边界升序 - items.Sort((a, b) => getLeft(a).CompareTo(getLeft(b))); - - // 2. 扫描分列:X范围有重叠的归为同一列 - var columns = new List>(); - double curMaxRight = double.NegativeInfinity; - List curCol = null; - foreach (var it in items) - { - double left = getLeft(it); - double right = getRight(it); - if (curCol == null || left > curMaxRight) - { - // 新列 - curCol = new List(); - columns.Add(curCol); - curMaxRight = right; - } - else - { - // 加入当前列,更新右边界 - if (right > curMaxRight) curMaxRight = right; - } - curCol.Add(it); - } - - // 3. 每列内按Y降序(上在前) - foreach (var col in columns) - { - col.Sort((a, b) => getCenterY(b).CompareTo(getCenterY(a))); - } - - // 4. 合并(列间已按X升序) - items.Clear(); - foreach (var col in columns) items.AddRange(col); - } - - var result = new List(); - if (isCrossing && items.Count > 1) - { - // ★ 反向框选 + 多条文本:合并模式 - // 画一个大框,所有文本共用这个框Handle - // 每个文本作为独立的 PaTextResult 传出(共用同一个框Handle), - // 让 Form3 能检查每个文本是否已存在并自动合并已存在的元件 - string mergedHandle = DrawMergedFrame(items, colorIndex); - foreach (var it in items) - { - if (!string.IsNullOrEmpty(it.Text)) - { - result.Add(new PaTextResult - { - Text = it.Text.Trim(), - FrameHandle = mergedHandle, - TextHandle = it.TextHandle - }); - } - } - } - else if (currentMode == PaMode.Yuanjian) - { - // 元件模式(正向框选或单条):每个文字一条,每个文字一个框 - var handles = DrawTextFrames(items, colorIndex); - for (int i = 0; i < items.Count; i++) - { - string h = i < handles.Count ? handles[i] : ""; - result.Add(new PaTextResult - { - Text = items[i].Text, - FrameHandle = h, - TextHandle = items[i].TextHandle - }); - } - } - else - { - // 图号/箱号(正向框选或单条):去重(同名只算一条),框对应 - var seen = new HashSet(); - var seenTextHandles = new HashSet(); - var handles = DrawTextFrames(items, colorIndex); - for (int i = 0; i < items.Count; i++) - { - // ★ 用文本实体Handle去重(同一个文本实体只算一条), - // 不同位置的相同内容文本算两条 - if (seenTextHandles.Add(items[i].TextHandle) && seen.Add(items[i].Text)) - { - string h = i < handles.Count ? handles[i] : ""; - result.Add(new PaTextResult - { - Text = items[i].Text, - FrameHandle = h, - TextHandle = items[i].TextHandle - }); - } - } - } - - // ★ 立即把这一批数据(文本+框Handle)送给调用方(插入到表格) - if (result.Count > 0) - { - var handler = BatchTextsPicked; - if (handler != null) - { - try { handler(currentMode, result); } catch { } - } - - // ★ 扒完一批后自动切换到下一个模式(图号→箱号→元件) - // 元件模式扒完后保持元件模式不变(继续扒下一个箱号的元件) - if (currentMode == PaMode.Tuhao) - { - currentMode = PaMode.Xianghao; - ed.WriteMessage("\n[扒数据] 图号已扒完,自动切换到【箱号】模式。"); - } - else if (currentMode == PaMode.Xianghao) - { - currentMode = PaMode.Yuanjian; - ed.WriteMessage("\n[扒数据] 箱号已扒完,自动切换到【元件】模式。"); - } - } - // 继续下一次框选 - } - } - catch (System.Exception ex) - { - try { ed.WriteMessage("\n[扒数据] 异常: " + ex.Message); } catch { } - } - } - - /// - /// 获取右键切换的下一个扒图模式。 - /// 顺序:图号 → 箱号 → 元件 → 退出(返回当前模式表示退出)。 - /// - private static PaMode GetNextMode(PaMode current) - { - switch (current) - { - case PaMode.Tuhao: return PaMode.Xianghao; - case PaMode.Xianghao: return PaMode.Yuanjian; - default: return PaMode.Yuanjian; // 元件右键 → 返回自身,外层判断退出 - } - } - - /// 获取模式的中文名称(用于切换提示)。 - private static string GetModeName(PaMode mode) - { - switch (mode) - { - case PaMode.Tuhao: return "图号"; - case PaMode.Xianghao: return "箱号"; - default: return "元件"; - } - } - - /// - /// 反向框选合并时:计算所有文字的总边界,画一个大框包住所有文字。 - /// 返回:大框的 Handle 字符串(失败返回空字符串)。 - /// - private static string DrawMergedFrame(List items, short colorIndex) - { - string handle = ""; - try - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc == null) return handle; - var db = doc.Database; - - // 先计算所有文字的合并 Extents - double? minX = null, minY = null, maxX = null, maxY = null; - foreach (var item in items) - { - if (item.Bounds == null) continue; - Extents3d ext = item.Bounds.Value; - if (minX == null || ext.MinPoint.X < minX.Value) minX = ext.MinPoint.X; - if (minY == null || ext.MinPoint.Y < minY.Value) minY = ext.MinPoint.Y; - if (maxX == null || ext.MaxPoint.X > maxX.Value) maxX = ext.MaxPoint.X; - if (maxY == null || ext.MaxPoint.Y > maxY.Value) maxY = ext.MaxPoint.Y; - } - if (minX == null) return handle; - - using (var tr = db.TransactionManager.StartTransaction()) - { - // 确保专用图层存在 - LayerTable lt = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead); - ObjectId layerId; - if (lt.Has(PaLayerName)) - { - layerId = lt[PaLayerName]; - } - else - { - lt.UpgradeOpen(); - var layerDef = new LayerTableRecord { Name = PaLayerName }; - layerId = lt.Add(layerDef); - tr.AddNewlyCreatedDBObject(layerDef, true); - } - - var ms = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); - - // ★ 先删除这批文字之前已有的旧框(避免小框和大框同时存在) - // 遍历当前空间,找出 __CADCJ_PA_FRAME 图层上与这批文字 Bounds 相交的实体, - // 通过 EraseGroupForEntity 删除整个组(边框+蒙版一起删) - var idsToDelete = new List(); - foreach (ObjectId entId in ms) - { - var ent = tr.GetObject(entId, OpenMode.ForRead, false, true) as Entity; - if (ent == null) continue; - if (ent.LayerId != layerId) continue; - if (ent.IsErased) continue; - Extents3d? entExt = null; - try { entExt = ent.GeometricExtents; } catch { } - if (!entExt.HasValue) continue; - // 检查是否与任何文字 item 的 Bounds 相交 - foreach (var item in items) - { - if (item.Bounds == null) continue; - if (BoundsIntersect(entExt.Value, item.Bounds.Value)) - { - idsToDelete.Add(entId); - break; - } - } - } - foreach (ObjectId id in idsToDelete) - { - // ★ 先删除同组的其他实体(Hatch),再删除主实体 - EraseGroupForEntity(tr, id); - var ent = tr.GetObject(id, OpenMode.ForWrite); - if (!ent.IsErased) ent.Erase(); - } - - // ★ 边距极小:总宽高的 2%,最小 0.5 - double totalW = maxX.Value - minX.Value; - double totalH = maxY.Value - minY.Value; - double padX = Math.Max(totalW * 0.02, 0.5); - double padY = Math.Max(totalH * 0.02, 0.5); - - // 大框四角点(带边距,X和Y方向各自按比例) - Point3d p1 = new Point3d(minX.Value - padX, minY.Value - padY, 0); - Point3d p2 = new Point3d(maxX.Value + padX, minY.Value - padY, 0); - Point3d p3 = new Point3d(maxX.Value + padX, maxY.Value + padY, 0); - Point3d p4 = new Point3d(minX.Value - padX, maxY.Value + padY, 0); - - var pl = new Polyline(); - pl.AddVertexAt(0, new Point2d(p1.X, p1.Y), 0, 0, 0); - pl.AddVertexAt(1, new Point2d(p2.X, p2.Y), 0, 0, 0); - pl.AddVertexAt(2, new Point2d(p3.X, p3.Y), 0, 0, 0); - pl.AddVertexAt(3, new Point2d(p4.X, p4.Y), 0, 0, 0); - pl.Closed = true; - pl.Color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex); - pl.LayerId = layerId; - pl.LineWeight = LineWeight.LineWeight070; - - ms.AppendEntity(pl); - tr.AddNewlyCreatedDBObject(pl, true); - // ★ 记录大框的 Handle - handle = pl.Handle.ToString(); - - // ★ 添加半透明填充蒙版(用 Hatch 实体,支持透明度) - var hatch = new Hatch(); - hatch.SetHatchPattern(HatchPatternType.PreDefined, "SOLID"); - hatch.Color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex); - hatch.Transparency = new Transparency(65); // 65% 透明度 - hatch.LayerId = layerId; - ms.AppendEntity(hatch); - tr.AddNewlyCreatedDBObject(hatch, true); - - ObjectIdCollection hatchLoopIds = new ObjectIdCollection(); - hatchLoopIds.Add(pl.Id); - hatch.AppendLoop(HatchLoopTypes.Default, hatchLoopIds); - - // ★ 把 Polyline 和 Hatch 创建为一个组(整体选中/整体删除) - MakeFrameGroup(db, tr, pl.Id, hatch.Id); - - tr.Commit(); - } - - doc.Editor.UpdateScreen(); - doc.Editor.Regen(); - } - catch (Exception ex) - { - try - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) doc.Editor.WriteMessage("\n[扒数据] 画合并框失败: " + ex.Message); - } - catch { } - } - return handle; - } - - /// - /// 检查两个 Extents3d 是否相交(用于删除旧框时判断范围重叠)。 - /// - private static bool BoundsIntersect(Extents3d a, Extents3d b) - { - // X 方向不相交 - if (a.MaxPoint.X < b.MinPoint.X || a.MinPoint.X > b.MaxPoint.X) return false; - // Y 方向不相交 - if (a.MaxPoint.Y < b.MinPoint.Y || a.MinPoint.Y > b.MaxPoint.Y) return false; - return true; - } - - /// - /// ★ 把 Polyline(边框) 和 Hatch(蒙版) 创建为一个命名组, - /// 这样用户在 CAD 里选中/删除其中一个时,整个组(边框+蒙版)会一起被选中/删除。 - /// - private static void MakeFrameGroup(Database db, Transaction tr, ObjectId plId, ObjectId hatchId) - { - try - { - var groupDict = (DBDictionary)tr.GetObject(db.GroupDictionaryId, OpenMode.ForWrite); - // 组名用 Polyline 的 Handle 保证唯一 - string groupName = "CADCJ_PA_FRAME_" + plId.Handle.ToString(); - var group = new Group(groupName, true); // true = 可选中 - group.Append(new ObjectIdCollection(new[] { plId, hatchId })); - groupDict.SetAt(groupName, group); - tr.AddNewlyCreatedDBObject(group, true); - } - catch { } - } - - /// - /// ★ 删除包含指定实体的所有 Group 内的所有实体(连同 Group 本身一起删除)。 - /// 用于"删除框时自动删除关联的蒙版"。 - /// - public static void EraseGroupForEntity(Transaction tr, ObjectId entId) - { - try - { - var ent = tr.GetObject(entId, OpenMode.ForRead) as Entity; - if (ent == null) return; - // 获取实体的所有 PersistentReactor(Group 会作为 reactor 记录) - ObjectIdCollection reactors = ent.GetPersistentReactorIds(); - var idsToErase = new List(); - var groupsToErase = new List(); - foreach (ObjectId reactorId in reactors) - { - var grp = tr.GetObject(reactorId, OpenMode.ForRead) as Group; - if (grp == null) continue; - // 收集 Group 内所有实体 - foreach (ObjectId memberId in grp.GetAllEntityIds()) - { - if (!idsToErase.Contains(memberId)) idsToErase.Add(memberId); - } - groupsToErase.Add(reactorId); - } - // 删除 Group 内所有实体 - foreach (ObjectId memberId in idsToErase) - { - if (memberId == entId) continue; // 主实体由调用方删除 - try - { - var member = tr.GetObject(memberId, OpenMode.ForWrite); - if (!member.IsErased) member.Erase(); - } - catch { } - } - // 删除 Group 本身 - foreach (ObjectId groupId in groupsToErase) - { - try - { - var grp = tr.GetObject(groupId, OpenMode.ForWrite); - if (!grp.IsErased) grp.Erase(); - } - catch { } - } - } - catch { } - } - - /// - /// 在每个文字周围画一个彩色矩形框(LWPolyline),不改文字本身的颜色。 - /// 所有矩形框放在专用图层 __CADCJ_PA_FRAME 上,方便批量清除。 - /// 返回:每个 item 对应的框 Handle 字符串列表(和 items 顺序一致;无 Bounds 的为空字符串)。 - /// - private static List DrawTextFrames(List items, short colorIndex) - { - var handles = new List(); - try - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc == null) return handles; - var db = doc.Database; - - using (var tr = db.TransactionManager.StartTransaction()) - { - // 确保专用图层存在(如果不存在就创建) - LayerTable lt = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead); - ObjectId layerId; - if (lt.Has(PaLayerName)) - { - layerId = lt[PaLayerName]; - } - else - { - lt.UpgradeOpen(); - var layerDef = new LayerTableRecord { Name = PaLayerName }; - layerId = lt.Add(layerDef); - tr.AddNewlyCreatedDBObject(layerDef, true); - } - - // 获取当前空间(模型空间或图纸空间) - var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); - var ms = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); - - foreach (var item in items) - { - if (item.Bounds == null) { handles.Add(""); continue; } - Extents3d ext = item.Bounds.Value; - - // ★ 用文字的实际位置和高度估算更紧凑的范围 - // GeometricExtents 可能包含字体预留的 ascent/descent 空间, - // 这里用文字中心点和估算的宽高来定义框,使其更贴合文字 - double textW, textH; - if (ext.MaxPoint.Y - ext.MinPoint.Y > ext.MaxPoint.X - ext.MinPoint.X * 3) - { - // 如果高度远大于宽度(多行或特殊情况),用 GeometricExtents - textW = ext.MaxPoint.X - ext.MinPoint.X; - textH = ext.MaxPoint.Y - ext.MinPoint.Y; - } - else - { - // 单行文字:用中心点和估算尺寸 - textW = ext.MaxPoint.X - ext.MinPoint.X; - textH = ext.MaxPoint.Y - ext.MinPoint.Y; - } - - // ★ 边距极小:文字宽高的 3%,最小 0.3 - double padX = Math.Max(textW * 0.03, 0.3); - double padY = Math.Max(textH * 0.03, 0.3); - - // 矩形四角点(带极小边距) - Point3d p1 = new Point3d(ext.MinPoint.X - padX, ext.MinPoint.Y - padY, 0); - Point3d p2 = new Point3d(ext.MaxPoint.X + padX, ext.MinPoint.Y - padY, 0); - Point3d p3 = new Point3d(ext.MaxPoint.X + padX, ext.MaxPoint.Y + padY, 0); - Point3d p4 = new Point3d(ext.MinPoint.X - padX, ext.MaxPoint.Y + padY, 0); - - // 创建 LWPolyline 矩形 - var pl = new Polyline(); - pl.AddVertexAt(0, new Point2d(p1.X, p1.Y), 0, 0, 0); - pl.AddVertexAt(1, new Point2d(p2.X, p2.Y), 0, 0, 0); - pl.AddVertexAt(2, new Point2d(p3.X, p3.Y), 0, 0, 0); - pl.AddVertexAt(3, new Point2d(p4.X, p4.Y), 0, 0, 0); - pl.Closed = true; - - // 设置颜色和图层 - pl.Color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex); - pl.LayerId = layerId; - // 线宽更粗,看得清 - pl.LineWeight = LineWeight.LineWeight070; - - ms.AppendEntity(pl); - tr.AddNewlyCreatedDBObject(pl, true); - // ★ 记录框的 Handle,用于关联表格数据行 - handles.Add(pl.Handle.ToString()); - - // ★ 添加半透明填充蒙版(用 Hatch 实体,支持透明度) - var hatch = new Hatch(); - hatch.SetHatchPattern(HatchPatternType.PreDefined, "SOLID"); - hatch.Color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex); - hatch.Transparency = new Transparency(65); // 65% 透明度 - hatch.LayerId = layerId; - ms.AppendEntity(hatch); - tr.AddNewlyCreatedDBObject(hatch, true); - - ObjectIdCollection hatchLoopIds = new ObjectIdCollection(); - hatchLoopIds.Add(pl.Id); - hatch.AppendLoop(HatchLoopTypes.Default, hatchLoopIds); - - // ★ 把 Polyline 和 Hatch 创建为一个组(整体选中/整体删除) - MakeFrameGroup(db, tr, pl.Id, hatch.Id); - } - - tr.Commit(); - } - - // 刷新显示 - doc.Editor.UpdateScreen(); - doc.Editor.Regen(); - } - catch (Exception ex) - { - try - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) doc.Editor.WriteMessage("\n[扒数据] 画框失败: " + ex.Message); - } - catch { } - } - return handles; - } - - /// - /// 清除所有扒数据时画的彩色矩形框(删除 __CADCJ_PA_FRAME 图层上的所有对象)。 - /// 不动文字本身,文字保持原色。 - /// - public static void ClearAllHighlight() - { - try - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc == null) return; - var db = doc.Database; - - using (var tr = db.TransactionManager.StartTransaction()) - { - var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); - // 遍历所有块定义(模型空间+所有布局),删除目标图层上的对象 - foreach (ObjectId btrId in bt) - { - var btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead); - var ids = new List(); - foreach (ObjectId entId in btr) - { - var ent = tr.GetObject(entId, OpenMode.ForRead, false, true) as Entity; - if (ent == null) continue; - if (ent.Layer == PaLayerName) - { - ids.Add(entId); - } - } - if (ids.Count > 0) - { - btr.UpgradeOpen(); - foreach (ObjectId id in ids) - { - // ★ 先删除同组的其他实体,再删除主实体 - EraseGroupForEntity(tr, id); - var ent = tr.GetObject(id, OpenMode.ForWrite); - if (!ent.IsErased) ent.Erase(); - } - } - } - tr.Commit(); - } - - doc.Editor.UpdateScreen(); - doc.Editor.Regen(); - - try { doc.Editor.WriteMessage("\n[扒数据] 已清除所有标记框。"); } catch { } - } - catch (Exception ex) - { - try - { - var doc = AcAp.DocumentManager.MdiActiveDocument; - if (doc != null) doc.Editor.WriteMessage("\n[扒数据] 清除失败: " + ex.Message); - } - catch { } - } - } - - private class TextItem - { - public string Text; - public Point3d Position; - public Extents3d? Bounds; - public ObjectId ObjectId; - public string TextHandle = ""; - } - } -} diff --git a/cadbt/cadbt/cadcj/System.Data.SQLite.dll b/cadbt/cadbt/cadcj/System.Data.SQLite.dll deleted file mode 100644 index 3b0ae33..0000000 Binary files a/cadbt/cadbt/cadcj/System.Data.SQLite.dll and /dev/null differ diff --git a/cadbt/cadbt/cadcj/app.manifest b/cadbt/cadbt/cadcj/app.manifest deleted file mode 100644 index d330f4d..0000000 --- a/cadbt/cadbt/cadcj/app.manifest +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - false - unaware - - - diff --git a/cadbt/cadbt/cadcj/build.bat b/cadbt/cadbt/cadcj/build.bat deleted file mode 100644 index 0e47615..0000000 --- a/cadbt/cadbt/cadcj/build.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -REM ============================================ -REM Auto-generated build script -REM All non-ASCII paths are in build.rsp (UTF-8) -REM Keep this .bat file ASCII-only to avoid cmd codepage issues -REM ============================================ - -cd /d "%~dp0" - -"%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\csc.exe" @build.rsp - -if %ERRORLEVEL% EQU 0 ( - echo Build OK. Launching... - powershell -NoProfile -Command "Start-Process -FilePath ('%~dp0' + (Select-String -Path build.rsp -Pattern '^/out:(.+)$').Matches.Groups[1].Value)" -) else ( - echo Build FAILED - see messages above - pause -) - diff --git a/cadbt/cadbt/cadcj/build.rsp b/cadbt/cadbt/cadcj/build.rsp deleted file mode 100644 index 4a61435..0000000 --- a/cadbt/cadbt/cadcj/build.rsp +++ /dev/null @@ -1,27 +0,0 @@ -# Auto-generated csc response file -/target:library -/platform:x64 -/utf8output -/out:cadcj.dll -/win32manifest:app.manifest -/r:System.Windows.Forms.dll -/r:System.Drawing.dll -/r:System.dll -/r:System.Data.dll -/r:System.Core.dll -/r:System.Xml.dll -/r:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\PresentationCore.dll" -/r:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\WindowsBase.dll" -/r:System.IO.Compression.dll -/r:System.IO.Compression.FileSystem.dll -/r:"AdvancedDataGridView.dll" -/r:"System.Data.SQLite.dll" -/r:"E:\cad2\AutoCAD 2018\acdbmgd.dll" -/r:"E:\cad2\AutoCAD 2018\acmgd.dll" -/r:"E:\cad2\AutoCAD 2018\accoremgd.dll" -CadPlugin.cs -Form3.cs -Form3.ui.cs -PaTextSelector.cs -新建项目.cs -新建项目.ui.cs diff --git a/cadbt/cadbt/cadcj/build_v2.rsp b/cadbt/cadbt/cadcj/build_v2.rsp deleted file mode 100644 index a576258..0000000 --- a/cadbt/cadbt/cadcj/build_v2.rsp +++ /dev/null @@ -1,25 +0,0 @@ -/target:library -/platform:x64 -/utf8output -/out:cadcj_v2.dll -/r:System.Windows.Forms.dll -/r:System.Drawing.dll -/r:System.dll -/r:System.Data.dll -/r:System.Core.dll -/r:System.Xml.dll -/r:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\PresentationCore.dll" -/r:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\WindowsBase.dll" -/r:System.IO.Compression.dll -/r:System.IO.Compression.FileSystem.dll -/r:"AdvancedDataGridView.dll" -/r:"System.Data.SQLite.dll" -/r:"D:\ProgramData\cad\AutoCAD 2018\acdbmgd.dll" -/r:"D:\ProgramData\cad\AutoCAD 2018\acmgd.dll" -/r:"D:\ProgramData\cad\AutoCAD 2018\accoremgd.dll" -CadPlugin.cs -Form3.cs -Form3.ui.cs -PaTextSelector.cs -新建项目.cs -新建项目.ui.cs diff --git a/cadbt/cadbt/cadcj/cadcj.dll b/cadbt/cadbt/cadcj/cadcj.dll deleted file mode 100644 index a0c8f9e..0000000 Binary files a/cadbt/cadbt/cadcj/cadcj.dll and /dev/null differ diff --git a/cadbt/cadbt/cadcj/deepseek.json b/cadbt/cadbt/cadcj/deepseek.json deleted file mode 100644 index 9725285..0000000 --- a/cadbt/cadbt/cadcj/deepseek.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ApiKey": "sk-65b3963488ab420aa9df3e4dafa02768", - "BaseUrl": "https://api.deepseek.com", - "Model": "deepseek-v4-flash", - "Enabled": false, - "WebSearch": true -} \ No newline at end of file diff --git a/cadbt/cadbt/cadcj/sjk/advancedDataGridView6Table.db b/cadbt/cadbt/cadcj/sjk/advancedDataGridView6Table.db deleted file mode 100644 index de2322b..0000000 Binary files a/cadbt/cadbt/cadcj/sjk/advancedDataGridView6Table.db and /dev/null differ diff --git a/cadbt/cadbt/cadcj/sjk/bjb/项目20260807001.db b/cadbt/cadbt/cadcj/sjk/bjb/项目20260807001.db deleted file mode 100644 index 0d7e119..0000000 Binary files a/cadbt/cadbt/cadcj/sjk/bjb/项目20260807001.db and /dev/null differ diff --git a/cadbt/cadbt/cadcj/x64/SQLite.Interop.dll b/cadbt/cadbt/cadcj/x64/SQLite.Interop.dll deleted file mode 100644 index 1a86bfd..0000000 Binary files a/cadbt/cadbt/cadcj/x64/SQLite.Interop.dll and /dev/null differ diff --git a/cadbt/cadbt/cadcj/卸载CAD插件.bat b/cadbt/cadbt/cadcj/卸载CAD插件.bat deleted file mode 100644 index 89013b5..0000000 --- a/cadbt/cadbt/cadcj/卸载CAD插件.bat +++ /dev/null @@ -1,26 +0,0 @@ -@echo off -chcp 936 >nul -title ³ÉÌױ¨¼Û CAD ²å¼þжÔسÌÐò - -REM Çл»µ½Åú´¦ÀíÎļþËùÔÚĿ¼£¨֧³ִÓÈÎÒâλÖÃÔËÐУ© -cd /d "%~dp0" - -REM ¼ì²é PowerShell ½ű¾ÊǷñ´æÔÚ -if not exist "жÔØCAD²å¼þ.ps1" ( - echo [´íÎó] δÕҵ½ жÔØCAD²å¼þ.ps1 - echo Çëȷ±£±¾Åú´¦ÀíÎļþÓë жÔØCAD²å¼þ.ps1 ÔÚͬһĿ¼¡£ - pause - exit /b 1 -) - -REM ÒԹÜÀíԱÉí·ÝÔËÐÐ PowerShell ½ű¾£¨±ÜÃâ HKLM ɾ³ýÌáȨµ¯´°Öжϣ© -powershell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process powershell -ArgumentList '-NoProfile','-ExecutionPolicy','Bypass','-File','%~dp0жÔØCAD²å¼þ.ps1' -Verb RunAs -Wait" - -REM ÈôÓû§ȡÏûÌáȨ£¬Ôò·ÇÌáȨÔËÐУ¨HKLM ɾ³ý»á×Զ¯ÌáȨ£¬acaddoc.lsp ºÍ TRUSTEDPATHS ÎÞÐè¹ÜÀíԱ£© -if errorlevel 1 ( - echo. - echo [Ìáʾ] ¹ÜÀíԱÌáȨ±»ȡÏû£¬³¢ÊԷÇÌáȨÔËÐÐ... - powershell -NoProfile -ExecutionPolicy Bypass -File "жÔØCAD²å¼þ.ps1" -) - -pause \ No newline at end of file diff --git a/cadbt/cadbt/cadcj/卸载CAD插件.ps1 b/cadbt/cadbt/cadcj/卸载CAD插件.ps1 deleted file mode 100644 index 42581eb..0000000 --- a/cadbt/cadbt/cadcj/卸载CAD插件.ps1 +++ /dev/null @@ -1,263 +0,0 @@ -# =========================================================================== -# 成套报价 CAD 插件 - 通用卸载脚本 -# 自动检测 AutoCAD 并移除所有安装时写入的配置 -# 用法:以管理员身份运行,或在 PowerShell 中执行本脚本 -# =========================================================================== - -# --- 0. 环境与自检 --- -$ErrorActionPreference = 'Stop' -# $PSScriptRoot 在 -File 模式下可靠返回脚本所在目录(PS 3.0+) -$scriptDir = if ($PSScriptRoot) { $PSScriptRoot } else { Split-Path -Parent $MyInvocation.MyCommand.Path } -$scriptDir = $scriptDir.TrimEnd('\') # 统一去除尾部反斜杠,便于比较 - -# 检测是否管理员(写 HKLM 需要) -$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) -if (-not $isAdmin) { - Write-Host "[提示] 当前未以管理员身份运行,HKLM 注册表删除将自动提权。" -ForegroundColor Yellow - Write-Host " acaddoc.lsp 和 TRUSTEDPATHS 无需管理员权限。" -ForegroundColor Yellow - Write-Host "" -} - -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host " 成套报价 CAD 插件卸载程序" -ForegroundColor Cyan -Write-Host " 插件目录: $scriptDir" -ForegroundColor Cyan -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host "" - -# --- 1. 检测已安装的 AutoCAD 版本 --- -Write-Host "[1/4] 检测 AutoCAD 安装..." -ForegroundColor Green - -$acadInstalls = @() -$regRoots = @( - 'HKLM:\SOFTWARE\Autodesk\AutoCAD', - 'HKLM:\SOFTWARE\WOW6432Node\Autodesk\AutoCAD' -) - -foreach ($root in $regRoots) { - if (-not (Test-Path $root)) { continue } - Get-ChildItem $root -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match '^R\d+\.0$' } | ForEach-Object { - $verKey = $_.PSPath - $verNum = $_.PSChildName - Get-ChildItem $verKey -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match '^ACAD-\d+:\d+$' } | ForEach-Object { - $langKey = $_.PSPath - $props = Get-ItemProperty -Path $langKey -ErrorAction SilentlyContinue - $loc = $props.AcadLocation - $prod = $props.ProductName - if ($loc -and (Test-Path $loc)) { - $acadInstalls += [PSCustomObject]@{ - Version = $verNum - LangKey = $_.PSChildName - Location = $loc - Product = $prod - HKLMKey = $langKey - } - } - } - } -} - -if ($acadInstalls.Count -eq 0) { - Write-Host "[警告] 未检测到已安装的 AutoCAD,无法清理注册表。" -ForegroundColor Yellow - Write-Host " 如有手动残留的 acaddoc.lsp,请手动检查。" -ForegroundColor Yellow - if (-not $env:CADCJ_SILENT) { Read-Host "按回车退出" } - exit 0 -} - -Write-Host "找到 $($acadInstalls.Count) 个 AutoCAD 安装:" -ForegroundColor Green -for ($i = 0; $i -lt $acadInstalls.Count; $i++) { - $a = $acadInstalls[$i] - Write-Host (" [{0}] {1} ({2}) - {3}" -f $i, $a.Product, $a.Version, $a.Location) -ForegroundColor White -} -Write-Host "" - -# 若有多个,让用户选择 -$target = $acadInstalls[0] -if ($acadInstalls.Count -gt 1) { - if ($env:CADCJ_SILENT) { - Write-Host "[静默模式] 检测到多个 AutoCAD,默认选择第一个: $($target.Product)" -ForegroundColor Yellow - } else { - do { - $sel = Read-Host "请选择要卸载的 AutoCAD 序号 (0-$($acadInstalls.Count - 1)),默认 0" - if ([string]::IsNullOrWhiteSpace($sel)) { $sel = '0' } - } until ($sel -match '^\d+$' -and [int]$sel -lt $acadInstalls.Count) - $target = $acadInstalls[[int]$sel] - } -} - -Write-Host "" -Write-Host ("目标: {0} ({1})" -f $target.Product, $target.Version) -ForegroundColor Cyan -Write-Host "" - -# --- 2. 删除 HKLM 注册表 CADCJ 节点 --- -Write-Host "[2/4] 删除 HKLM 自动加载注册表..." -ForegroundColor Green - -$hklmPath = $target.HKLMKey -replace '^HKLM:\\', '' -$appsPath = "HKLM:\$hklmPath\Apps\CADCJ" - -if (-not (Test-Path $appsPath)) { - Write-Host " HKLM 中无 CADCJ 节点,跳过" -ForegroundColor DarkGray -} else { - if ($isAdmin) { - Remove-Item -Path $appsPath -Recurse -Force -ErrorAction SilentlyContinue - if (-not (Test-Path $appsPath)) { - Write-Host " 已删除 HKLM 注册表节点" -ForegroundColor Green - } else { - Write-Host " [警告] 删除失败,请检查权限" -ForegroundColor Yellow - } - } else { - # 提权删除 - $tmpPs1 = Join-Path $env:TEMP "cadcj_uninstall_hklm.ps1" - $tmpContent = @" -`$ErrorActionPreference = 'Stop' -`$path = '$appsPath' -if (Test-Path `$path) { Remove-Item -Path `$path -Recurse -Force } -if (-not (Test-Path `$path)) { Write-Host ' HKLM 注册表节点已删除' } else { Write-Host ' [警告] 删除失败' } -"@ - $tmpContent | Out-File -FilePath $tmpPs1 -Encoding UTF8 -Force - $p = Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-ExecutionPolicy","Bypass","-File",$tmpPs1 -Verb RunAs -Wait -PassThru - if ($p.ExitCode -eq 0) { - Write-Host " 已删除 HKLM 注册表节点" -ForegroundColor Green - } else { - Write-Host " [警告] HKLM 删除失败(用户取消提权?)" -ForegroundColor Yellow - } - Remove-Item $tmpPs1 -Force -ErrorAction SilentlyContinue - } -} -Write-Host "" - -# --- 3. 从所有 TRUSTEDPATHS 移除插件目录 --- -Write-Host "[3/4] 移除受信任路径(TRUSTEDPATHS)..." -ForegroundColor Green - -$hkcuRoot = "HKCU:\SOFTWARE\Autodesk\AutoCAD\$($target.Version)\$($target.LangKey)" - -$targets = @() -$topVar = Join-Path $hkcuRoot 'Variables' -if (Test-Path $topVar) { $targets += $topVar } -$profRoot = Join-Path $hkcuRoot 'Profiles' -if (Test-Path $profRoot) { - Get-ChildItem $profRoot -ErrorAction SilentlyContinue | ForEach-Object { - $pv = Join-Path $_.PSPath 'Variables' - if (Test-Path $pv) { $targets += $pv } - } -} - -$removedCount = 0 -foreach ($t in $targets) { - $cur = (Get-ItemProperty -Path $t -Name 'TRUSTEDPATHS' -ErrorAction SilentlyContinue).TRUSTEDPATHS - if (-not $cur) { continue } - # 分割后去除每段首尾空白,统一比较 - $allParts = $cur.Split(';') | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' } - $keepParts = $allParts | Where-Object { -not $_.Equals($scriptDir, [StringComparison]::OrdinalIgnoreCase) } - $hasOurs = ($allParts | Where-Object { $_.Equals($scriptDir, [StringComparison]::OrdinalIgnoreCase) }).Count -gt 0 - $shortName = $t -replace '.*\\Profiles\\','Profile\' -replace '\\Variables','' - if (-not $hasOurs) { - Write-Host " 未包含: $shortName 跳过" -ForegroundColor DarkGray - continue - } - if ($keepParts.Count -eq 0) { - # 全部都是本目录,删除整个值 - Remove-ItemProperty -Path $t -Name 'TRUSTEDPATHS' -ErrorAction SilentlyContinue - Write-Host " 已清空: $shortName" -ForegroundColor Green - } else { - $newVal = $keepParts -join ';' - Set-ItemProperty -Path $t -Name 'TRUSTEDPATHS' -Value $newVal -Type String -Force - Write-Host " 已移除: $shortName" -ForegroundColor Green - } - $removedCount++ -} -if ($removedCount -eq 0) { - Write-Host " 无需修改(TRUSTEDPATHS 中未包含本目录)" -ForegroundColor DarkGray -} -Write-Host "" - -# --- 4. 清理 acaddoc.lsp 中的 CADCJ 加载逻辑 --- -Write-Host "[4/4] 清理 acaddoc.lsp 自动加载脚本..." -ForegroundColor Green - -$acadDirName = Split-Path $target.Location -Leaf -$roamingBase = Join-Path $env:APPDATA "Autodesk\$acadDirName\$($target.Version)\chs\Support" -$installSupport = Join-Path $target.Location "Support" - -$candidateDirs = @($roamingBase, $installSupport) | Select-Object -Unique -$supDir = $null -foreach ($d in $candidateDirs) { - if (Test-Path $d) { $supDir = $d; break } -} - -if (-not $supDir) { - Write-Host " 未找到 Support 目录,跳过" -ForegroundColor DarkGray -} else { - $lspPath = Join-Path $supDir 'acaddoc.lsp' - if (-not (Test-Path $lspPath)) { - Write-Host " acaddoc.lsp 不存在,跳过" -ForegroundColor DarkGray - } else { - # 读取(尝试 GB2312,失败则用默认编码) - $content = $null - try { - $content = [System.IO.File]::ReadAllText($lspPath, [System.Text.Encoding]::GetEncoding('GB2312')) - } catch { - $content = Get-Content $lspPath -Raw -ErrorAction SilentlyContinue - } - - if (-not $content) { - Write-Host " acaddoc.lsp 为空或无法读取,跳过" -ForegroundColor DarkGray - } elseif ($content -notmatch 'CADCJ|cadcj') { - Write-Host " acaddoc.lsp 中无 CADCJ 加载逻辑,跳过" -ForegroundColor DarkGray - } else { - # 判断是否为纯 CADCJ 文件(以 ;;; CADCJ 开头或整个文件就是 CADCJ 块) - # 移除 CADCJ 加载块(从 ;;; CADCJ 标记开始到 (princ) 结束) - $pattern = '(?s)\s*;;; CADCJ.*?\(princ\)\s*' - $newContent = [regex]::Replace($content, $pattern, "`r`n") - # 清理多余空行 - $newContent = $newContent -replace "(`r`n){3,}", "`r`n`r`n" - $newContent = $newContent.TrimEnd() - - try { - if ([string]::IsNullOrWhiteSpace($newContent)) { - # 文件清空了,删除文件 - Remove-Item $lspPath -Force - Write-Host " 已删除: $lspPath(文件仅含 CADCJ 内容)" -ForegroundColor Green - } else { - # 保留其他内容,只移除 CADCJ 块 - [System.IO.File]::WriteAllText($lspPath, $newContent + "`r`n", [System.Text.Encoding]::GetEncoding('GB2312')) - Write-Host " 已清理 CADCJ 加载逻辑,保留其他内容: $lspPath" -ForegroundColor Green - } - } catch { - # 写入失败时提权 - Write-Host " 写入失败,尝试提权: $($_.Exception.Message)" -ForegroundColor Yellow - $tmpLsp = Join-Path $env:TEMP 'cadcj_acaddoc_clean.lsp' - if ([string]::IsNullOrWhiteSpace($newContent)) { - $delCmd = "Remove-Item '$lspPath' -Force -ErrorAction SilentlyContinue" - $p = Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-Command",$delCmd -Verb RunAs -Wait -PassThru - if ($p.ExitCode -eq 0) { - Write-Host " 已删除(提权): $lspPath" -ForegroundColor Green - } - } else { - [System.IO.File]::WriteAllText($tmpLsp, $newContent + "`r`n", [System.Text.Encoding]::GetEncoding('GB2312')) - $copyCmd = "Copy-Item '$tmpLsp' '$lspPath' -Force" - $p = Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-Command",$copyCmd -Verb RunAs -Wait -PassThru - if ($p.ExitCode -eq 0) { - Write-Host " 已清理(提权): $lspPath" -ForegroundColor Green - } - } - Remove-Item $tmpLsp -Force -ErrorAction SilentlyContinue - } - } - } -} -Write-Host "" - -# --- 完成 --- -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host " 卸载完成!" -ForegroundColor Green -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host "" -Write-Host "卸载摘要:" -ForegroundColor White -Write-Host " AutoCAD: $($target.Product) ($($target.Version))" -ForegroundColor White -Write-Host " HKLM 注册: 已删除 CADCJ 节点" -ForegroundColor White -Write-Host " TRUSTEDPATHS: 已移除 $scriptDir" -ForegroundColor White -Write-Host " acaddoc.lsp: 已清理 CADCJ 加载逻辑" -ForegroundColor White -Write-Host "" -Write-Host "插件文件本身未删除(cadcj.dll 等),如需彻底删除请手动移除目录:" -ForegroundColor Yellow -Write-Host " $scriptDir" -ForegroundColor Yellow -Write-Host "" -if (-not $env:CADCJ_SILENT) { Read-Host "按回车退出" } diff --git a/cadbt/cadbt/cadcj/安装CAD插件.bat b/cadbt/cadbt/cadcj/安装CAD插件.bat deleted file mode 100644 index 45fc4d4..0000000 --- a/cadbt/cadbt/cadcj/安装CAD插件.bat +++ /dev/null @@ -1,26 +0,0 @@ -@echo off -chcp 936 >nul -title ³ÉÌױ¨¼Û CAD ²å¼þ°²װ³ÌÐò - -REM Çл»µ½Åú´¦ÀíÎļþËùÔÚĿ¼£¨֧³ִÓÈÎÒâλÖÃÔËÐУ© -cd /d "%~dp0" - -REM ¼ì²é PowerShell ½ű¾ÊǷñ´æÔÚ -if not exist "°²װCAD²å¼þ.ps1" ( - echo [´íÎó] δÕҵ½ °²װCAD²å¼þ.ps1 - echo Çëȷ±£±¾Åú´¦ÀíÎļþÓë °²װCAD²å¼þ.ps1 ÔÚͬһĿ¼¡£ - pause - exit /b 1 -) - -REM ÒԹÜÀíԱÉí·ÝÔËÐÐ PowerShell ½ű¾£¨±ÜÃâ HKLM дÈëÌáȨµ¯´°Öжϣ© -powershell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process powershell -ArgumentList '-NoProfile','-ExecutionPolicy','Bypass','-File','%~dp0°²װCAD²å¼þ.ps1' -Verb RunAs -Wait" - -REM ÈôÓû§ȡÏûÌáȨ£¬Ôò·ÇÌáȨÔËÐУ¨HKLM дÈë»á×Զ¯ÌáȨ£¬acaddoc.lsp ºÍ TRUSTEDPATHS ÎÞÐè¹ÜÀíԱ£© -if errorlevel 1 ( - echo. - echo [Ìáʾ] ¹ÜÀíԱÌáȨ±»ȡÏû£¬³¢ÊԷÇÌáȨÔËÐÐ... - powershell -NoProfile -ExecutionPolicy Bypass -File "°²װCAD²å¼þ.ps1" -) - -pause \ No newline at end of file diff --git a/cadbt/cadbt/cadcj/安装CAD插件.ps1 b/cadbt/cadbt/cadcj/安装CAD插件.ps1 deleted file mode 100644 index 3016a0d..0000000 --- a/cadbt/cadbt/cadcj/安装CAD插件.ps1 +++ /dev/null @@ -1,309 +0,0 @@ -# =========================================================================== -# 成套报价 CAD 插件 - 通用安装脚本 -# 适用于任何电脑、任何已安装的 AutoCAD 版本(2010+) -# 用法:以管理员身份运行,或在 PowerShell 中执行本脚本 -# =========================================================================== - -# --- 0. 环境与自检 --- -$ErrorActionPreference = 'Stop' -# $PSScriptRoot 在 -File 模式下可靠返回脚本所在目录(PS 3.0+) -$scriptDir = if ($PSScriptRoot) { $PSScriptRoot } else { Split-Path -Parent $MyInvocation.MyCommand.Path } -$scriptDir = $scriptDir.TrimEnd('\') # 统一去除尾部反斜杠,便于比较 -$dllPath = Join-Path $scriptDir 'cadcj.dll' - -if (-not (Test-Path $dllPath)) { - Write-Host "[错误] 未找到 cadcj.dll,请确保脚本与 cadcj.dll 在同一目录。" -ForegroundColor Red - Write-Host " 当前目录: $scriptDir" -ForegroundColor Yellow - if (-not $env:CADCJ_SILENT) { Read-Host "按回车退出" } - exit 1 -} - -# 检测是否管理员(写 HKLM 需要) -$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) -if (-not $isAdmin) { - Write-Host "[提示] 当前未以管理员身份运行,HKLM 注册表写入将自动提权。" -ForegroundColor Yellow - Write-Host " acaddoc.lsp 和 TRUSTEDPATHS 无需管理员权限。" -ForegroundColor Yellow - Write-Host "" -} - -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host " 成套报价 CAD 插件安装程序" -ForegroundColor Cyan -Write-Host " 插件目录: $scriptDir" -ForegroundColor Cyan -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host "" - -# --- 1. 检测已安装的 AutoCAD 版本 --- -Write-Host "[1/4] 检测 AutoCAD 安装..." -ForegroundColor Green - -# 同时检测 64 位和 32 位注册表视图 -$acadInstalls = @() -$regRoots = @( - 'HKLM:\SOFTWARE\Autodesk\AutoCAD', - 'HKLM:\SOFTWARE\WOW6432Node\Autodesk\AutoCAD' -) - -foreach ($root in $regRoots) { - if (-not (Test-Path $root)) { continue } - # 遍历每个 Rxx.0 版本(如 R22.0=2018, R23.0=2020, R24.0=2022...) - Get-ChildItem $root -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match '^R\d+\.0$' } | ForEach-Object { - $verKey = $_.PSPath - $verNum = $_.PSChildName # 如 R22.0 - # 遍历该版本下的语言变体(如 ACAD-1001:804) - Get-ChildItem $verKey -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match '^ACAD-\d+:\d+$' } | ForEach-Object { - $langKey = $_.PSPath - $props = Get-ItemProperty -Path $langKey -ErrorAction SilentlyContinue - $loc = $props.AcadLocation - $prod = $props.ProductName - if ($loc -and (Test-Path $loc)) { - $acadInstalls += [PSCustomObject]@{ - Version = $verNum - LangKey = $_.PSChildName - Location = $loc - Product = $prod - RegRoot = $root - HKLMKey = $langKey - } - } - } - } -} - -if ($acadInstalls.Count -eq 0) { - Write-Host "[错误] 未检测到已安装的 AutoCAD。" -ForegroundColor Red - if (-not $env:CADCJ_SILENT) { Read-Host "按回车退出" } - exit 1 -} - -Write-Host "找到 $($acadInstalls.Count) 个 AutoCAD 安装:" -ForegroundColor Green -for ($i = 0; $i -lt $acadInstalls.Count; $i++) { - $a = $acadInstalls[$i] - Write-Host (" [{0}] {1} ({2}) - {3}" -f $i, $a.Product, $a.Version, $a.Location) -ForegroundColor White -} -Write-Host "" - -# 若有多个,让用户选择 -$target = $acadInstalls[0] -if ($acadInstalls.Count -gt 1) { - if ($env:CADCJ_SILENT) { - # 静默模式:默认选第一个,不交互 - Write-Host "[静默模式] 检测到多个 AutoCAD,默认选择第一个: $($target.Product)" -ForegroundColor Yellow - } else { - do { - $sel = Read-Host "请选择要安装的 AutoCAD 序号 (0-$($acadInstalls.Count - 1)),默认 0" - if ([string]::IsNullOrWhiteSpace($sel)) { $sel = '0' } - } until ($sel -match '^\d+$' -and [int]$sel -lt $acadInstalls.Count) - $target = $acadInstalls[[int]$sel] - } -} - -Write-Host "" -Write-Host ("目标: {0} ({1})" -f $target.Product, $target.Version) -ForegroundColor Cyan -Write-Host ("路径: {0}" -f $target.Location) -ForegroundColor Cyan -Write-Host "" - -# --- 2. 修正 MODULE 路径到 HKLM --- -Write-Host "[2/4] 注册 AutoCAD 自动加载(HKLM)..." -ForegroundColor Green - -# HKLM 路径(去除 HKLM: 前缀,得到 SOFTWARE\Autodesk\AutoCAD\Rxx.0\ACAD-xxxx:xxx\Apps\CADCJ) -$hklmPath = $target.HKLMKey -replace '^HKLM:\\', '' -$appsPath = "HKLM:\$hklmPath\Apps\CADCJ" - -# 写入函数(管理员直接写,非管理员生成临时 ps1 提权执行) -function Write-HklmReg { - param($Path, $Dll) - if (-not (Test-Path $Path)) { New-Item -Path $Path -Force | Out-Null } - Set-ItemProperty -Path $Path -Name 'DESCRIPTION' -Value '成套报价插件' -Type String -Force - Set-ItemProperty -Path $Path -Name 'LOADCTRLS' -Value 2 -Type DWord -Force - Set-ItemProperty -Path $Path -Name 'MANAGED' -Value 1 -Type DWord -Force - Set-ItemProperty -Path $Path -Name 'MODULE' -Value $Dll -Type String -Force -} - -if ($isAdmin) { - Write-HklmReg -Path $appsPath -Dll $dllPath - Write-Host " HKLM 注册完成" -ForegroundColor Green -} else { - # 生成临时 ps1 提权执行(避免字符串嵌套转义问题) - $tmpPs1 = Join-Path $env:TEMP "cadcj_install_hklm.ps1" - $tmpContent = @" -`$ErrorActionPreference = 'Stop' -`$path = '$appsPath' -`$dll = '$dllPath' -if (-not (Test-Path `$path)) { New-Item -Path `$path -Force | Out-Null } -Set-ItemProperty -Path `$path -Name 'DESCRIPTION' -Value '成套报价插件' -Type String -Force -Set-ItemProperty -Path `$path -Name 'LOADCTRLS' -Value 2 -Type DWord -Force -Set-ItemProperty -Path `$path -Name 'MANAGED' -Value 1 -Type DWord -Force -Set-ItemProperty -Path `$path -Name 'MODULE' -Value `$dll -Type String -Force -Write-Host ' HKLM 注册完成' -"@ - $tmpContent | Out-File -FilePath $tmpPs1 -Encoding UTF8 -Force - $p = Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-ExecutionPolicy","Bypass","-File",$tmpPs1 -Verb RunAs -Wait -PassThru - if ($p.ExitCode -ne 0) { - Write-Host "[警告] HKLM 写入失败(用户取消提权?)。不影响后续安装,acaddoc.lsp 会自动加载。" -ForegroundColor Yellow - } else { - Write-Host " HKLM 注册完成" -ForegroundColor Green - } - Remove-Item $tmpPs1 -Force -ErrorAction SilentlyContinue -} -Write-Host "" - -# --- 3. 添加 TRUSTEDPATHS 到所有用户配置(HKCU) --- -Write-Host "[3/4] 添加受信任路径(TRUSTEDPATHS)..." -ForegroundColor Green - -# 确定 HKCU 根路径 -$hkcuRoot = "HKCU:\SOFTWARE\Autodesk\AutoCAD\$($target.Version)\$($target.LangKey)" - -$targets = @() -# 顶层 Variables -$topVar = Join-Path $hkcuRoot 'Variables' -if (Test-Path $topVar) { $targets += $topVar } -# 各 Profile 下的 Variables -$profRoot = Join-Path $hkcuRoot 'Profiles' -if (Test-Path $profRoot) { - Get-ChildItem $profRoot -ErrorAction SilentlyContinue | ForEach-Object { - $pv = Join-Path $_.PSPath 'Variables' - if (Test-Path $pv) { $targets += $pv } - } -} - -$addedCount = 0 -foreach ($t in $targets) { - $cur = (Get-ItemProperty -Path $t -Name 'TRUSTEDPATHS' -ErrorAction SilentlyContinue).TRUSTEDPATHS - if ($cur -and ($cur.Split(';') -contains $scriptDir)) { - Write-Host " 已存在: $($t -replace '.*\\Profiles\\','Profile\') 跳过" -ForegroundColor DarkGray - continue - } - if ($cur) { - $newVal = "$cur;$scriptDir" - } else { - $newVal = $scriptDir - } - try { - New-ItemProperty -Path $t -Name 'TRUSTEDPATHS' -Value $newVal -PropertyType String -Force | Out-Null - $shortName = $t -replace '.*\\Profiles\\','Profile\' -replace '\\Variables','' - Write-Host " 已添加: $shortName" -ForegroundColor Green - $addedCount++ - } catch { - Write-Host " 失败: $t - $($_.Exception.Message)" -ForegroundColor Red - } -} -if ($addedCount -eq 0 -and $targets.Count -gt 0) { - Write-Host " 所有配置已包含本目录,无需修改" -ForegroundColor DarkGray -} -Write-Host "" - -# --- 4. 创建 acaddoc.lsp 自动加载(核心机制) --- -Write-Host "[4/4] 创建 acaddoc.lsp 自动加载脚本..." -ForegroundColor Green - -# 确定 Support 目录(优先用户漫游目录,其次 AutoCAD 安装目录) -# 漫游目录路径模式:%APPDATA%\Autodesk\AutoCAD 20XX\Rxx.0\chs\Support -$acadDirName = Split-Path $target.Location -Leaf # 如 "AutoCAD 2018" -$roamingBase = Join-Path $env:APPDATA "Autodesk\$acadDirName\$($target.Version)\chs\Support" -$installSupport = Join-Path $target.Location "Support" - -$candidateDirs = @($roamingBase, $installSupport) | Select-Object -Unique -$supDir = $null -foreach ($d in $candidateDirs) { - if (Test-Path $d) { $supDir = $d; break } -} -if (-not $supDir) { - # 创建漫游目录 - $supDir = $roamingBase - New-Item -ItemType Directory -Path $supDir -Force | Out-Null - Write-Host " 创建目录: $supDir" -ForegroundColor Yellow -} - -$lspPath = Join-Path $supDir 'acaddoc.lsp' - -# LISP 代码(路径用双反斜杠转义) -$dllPathEscaped = $dllPath -replace '\\','\\\\' -$lispCode = @" -;;; CADCJ 自动加载 - 由安装脚本生成 -;;; 每会话首次打开文档时通过 NETLOAD 加载成套报价插件 -;;; 使用内存全局变量,进程退出后自动清除,避免持久化导致跳过加载 -(vl-load-com) -(if (not *cadcj-loaded*) - (progn - (setq *cadcj-loaded* t) - (setq #cadcj-fd (getvar "FILEDIA")) - (setvar "FILEDIA" 0) - (vl-catch-all-apply - '(lambda () - (command "NETLOAD" "$dllPathEscaped") - ) - ) - (setvar "FILEDIA" #cadcj-fd) - (vl-propagate '*cadcj-loaded*) - ) -) -(princ) -"@ - -# 检查是否已有 acaddoc.lsp(避免覆盖用户现有内容) -$needMerge = $false -if (Test-Path $lspPath) { - $existing = Get-Content $lspPath -Raw -ErrorAction SilentlyContinue - if ($existing -and ($existing -match 'CADCJ|cadcj')) { - Write-Host " acaddoc.lsp 已包含 CADCJ 加载逻辑,跳过" -ForegroundColor DarkGray - } elseif ($existing) { - $needMerge = $true - Write-Host " 检测到现有 acaddoc.lsp,将追加 CADCJ 加载逻辑" -ForegroundColor Yellow - } -} - -try { - if ($needMerge) { - # 追加到现有文件末尾 - $existing + "`r`n" + $lispCode | Out-File -FilePath $lspPath -Encoding Default -Append -Force - } else { - # GB2312 编码写入(AutoCAD 正确读取中文路径) - [System.IO.File]::WriteAllText($lspPath, $lispCode, [System.Text.Encoding]::GetEncoding('GB2312')) - } - Write-Host " 已创建: $lspPath" -ForegroundColor Green -} catch { - # AppData 写入失败时提权 - Write-Host " 写入失败,尝试提权: $($_.Exception.Message)" -ForegroundColor Yellow - $tmpLsp = Join-Path $env:TEMP 'cadcj_acaddoc.lsp' - [System.IO.File]::WriteAllText($tmpLsp, $lispCode, [System.Text.Encoding]::GetEncoding('GB2312')) - $copyCmd = "Copy-Item '$tmpLsp' '$lspPath' -Force" - $p = Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-Command",$copyCmd -Verb RunAs -Wait -PassThru - if ($p.ExitCode -eq 0) { - Write-Host " 已创建(提权): $lspPath" -ForegroundColor Green - } else { - Write-Host " [错误] 无法创建 acaddoc.lsp" -ForegroundColor Red - } - Remove-Item $tmpLsp -Force -ErrorAction SilentlyContinue -} -Write-Host "" - -# --- 5. 同步更新 .reg 文件(便于记录) --- -$regFile = Join-Path $scriptDir '注册CAD自动加载.reg' -$regKeyHklm = $appsPath -replace '^HKLM:\\','HKEY_LOCAL_MACHINE\' -$regContent = @" -Windows Registry Editor Version 5.00 - -[$regKeyHklm] -"DESCRIPTION"="成套报价插件" -"LOADCTRLS"=dword:00000002 -"MANAGED"=dword:00000001 -"MODULE"="$($dllPath -replace '\\','\\')" -"@ -try { - $regContent | Out-File -FilePath $regFile -Encoding Default -Force - Write-Host " 已更新: $regFile" -ForegroundColor DarkGray -} catch {} -Write-Host "" - -# --- 完成 --- -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host " 安装完成!" -ForegroundColor Green -Write-Host "======================================================" -ForegroundColor Cyan -Write-Host "" -Write-Host "安装摘要:" -ForegroundColor White -Write-Host " AutoCAD: $($target.Product) ($($target.Version))" -ForegroundColor White -Write-Host " 插件DLL: $dllPath" -ForegroundColor White -Write-Host " LSP文件: $lspPath" -ForegroundColor White -Write-Host " 加载方式: acaddoc.lsp (NETLOAD)" -ForegroundColor White -Write-Host "" -Write-Host "现在启动 AutoCAD 并打开任意图纸,插件会自动加载。" -ForegroundColor Yellow -Write-Host "" -if (-not $env:CADCJ_SILENT) { Read-Host "按回车退出" } diff --git a/cadbt/cadbt/cadcj/安装到CAD.bat b/cadbt/cadbt/cadcj/安装到CAD.bat deleted file mode 100644 index b5afc9a..0000000 --- a/cadbt/cadbt/cadcj/安装到CAD.bat +++ /dev/null @@ -1,71 +0,0 @@ -@echo off -chcp 65001 >nul -REM ============================================ -REM 成套报价 CAD 插件 - 就地安装脚本 -REM 功能:把【本脚本所在目录】的 cadcj.dll 注册为 CAD 自动加载 -REM 原则:在哪个目录运行,就安装哪个目录(测试目录/安装目录通用) -REM 用法:双击运行(无需管理员权限,写的是用户级注册表 HKCU) -REM 更新 DLL 后:先关 CAD → 替换本目录 cadcj.dll → 再运行本脚本不需要, -REM 注册表已指向本目录,直接重启 CAD 即加载新版 -REM ============================================ - -setlocal enabledelayedexpansion - -REM 取脚本所在目录(去掉尾部反斜杠) -set "INSTDIR=%~dp0" -if "%INSTDIR:~-1%"=="\" set "INSTDIR=%INSTDIR:~0,-1%" -set "DLLPATH=%INSTDIR%\cadcj.dll" - -REM 检查本目录是否有 cadcj.dll -if not exist "%DLLPATH%" ( - echo [错误] 本目录没有 cadcj.dll,无法安装。 - echo 当前目录: %INSTDIR% - pause - exit /b 1 -) - -echo ============================================== -echo 成套报价 CAD 插件 - 就地安装 -echo 插件目录: %INSTDIR% -echo ============================================== -echo. - -REM 检查 CAD 是否在运行(在运行也能写注册表,但新DLL要重启CAD才生效) -tasklist /FI "IMAGENAME eq acad.exe" 2>nul | find /I "acad.exe" >nul -if %ERRORLEVEL% EQU 0 ( - echo [提示] AutoCAD 正在运行:注册完成后请重启 CAD 才能生效。 - echo. -) - -REM 枚举所有已安装的 AutoCAD 版本(HKCU 用户级,无需管理员) -REM ★ findstr "^HKEY_" 只取子键行,过滤掉 CurVer 这类值行 -set FOUND=0 -for /f "delims=" %%K in ('reg query "HKCU\SOFTWARE\Autodesk\AutoCAD" 2^>nul ^| findstr /I /C:"HKEY_"') do ( - for /f "delims=" %%P in ('reg query "%%K" 2^>nul ^| findstr /I /C:"HKEY_" ^| findstr /I "ACAD-"') do ( - set "APPSKEY=%%P\Apps\CADCJ" - reg add "!APPSKEY!" /v LOADCTRLS /t REG_DWORD /d 2 /f >nul - reg add "!APPSKEY!" /v MANAGED /t REG_DWORD /d 1 /f >nul - reg add "!APPSKEY!" /v MODULE /t REG_SZ /d "%DLLPATH%" /f >nul - reg add "!APPSKEY!" /v DESCRIPTION /t REG_SZ /d "ChengTao BaoJia Plugin" /f >nul - echo [OK] 已注册: !APPSKEY! - echo MODULE = %DLLPATH% - set FOUND=1 - ) -) - -if %FOUND% EQU 0 ( - echo [错误] 未检测到已安装的 AutoCAD(R22.0=2018 等)。 - echo 请确认 AutoCAD 已安装后重试。 - pause - exit /b 1 -) - -echo. -echo ============================================== -echo 安装完成! -echo CAD 自动加载: %DLLPATH% -echo 用户库CSV : 本目录下最新的 用户库_*.csv -echo 数据库sjk : 本目录 sjk\ 下 -echo 重启 AutoCAD 即生效。 -echo ============================================== -pause diff --git a/cadbt/cadbt/cadcj/新建 文本文档.txt b/cadbt/cadbt/cadcj/新建 文本文档.txt deleted file mode 100644 index ae4c7de..0000000 --- a/cadbt/cadbt/cadcj/新建 文本文档.txt +++ /dev/null @@ -1,1108 +0,0 @@ -fetch("https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5", { - "headers": { - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=0, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "same-origin", - "sec-fetch-user": "?1", - "upgrade-insecure-requests": "1", - "x-uctiming-46938875": "1786729133893", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=2917fe2d44e593a940b70814f251135a", - "Referer": "https://www.ztdq.com/product/select-model" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/match-by-keyword?keyword=3xLMZ1-0.5%E6%98%AF%E4%BB%80%E4%B9%88%E7%94%B5%E5%99%A8%E5%9E%8B%E5%8F%B7&_=1786729083534", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=2917fe2d44e593a940b70814f251135a", - "Referer": "https://www.ztdq.com/product/select-model" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/match-by-keyword?keyword=3xLMZ1-0.5&_=1786729083535", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=2917fe2d44e593a940b70814f251135a", - "Referer": "https://www.ztdq.com/product/select-model" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/match-by-keyword?keyword=3xLMZ1-0.5&_=1786729083536", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=2917fe2d44e593a940b70814f251135a", - "Referer": "https://www.ztdq.com/product/select-model" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/layui/css/layui.css", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/web-iconfont.css?version=1.1.1", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/iconfont.css?2019", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/ui_layout.css?v=20260806180032", { - "headers": { - "accept": "text/css,*/*;q=0.1", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=0", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "style", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/style_gks.css?v=20260806180032", { - "headers": { - "accept": "text/css,*/*;q=0.1", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=0", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "style", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/jquery-1.12.4.min.js", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/autocomplete.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/layer.js", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/layui/layui.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/gks-util.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/check-login-v2.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/zebra_tooltips.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.gongkongsaas.com/static/css/tippy-v2.css", { - "headers": { - "accept": "text/css,*/*;q=0.1", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=0", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "style", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "cross-site", - "sec-fetch-storage-access": "active", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.gongkongsaas.com/static/script/popper-v2.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "cross-site", - "sec-fetch-storage-access": "active", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.gongkongsaas.com/static/script/tippy-v2.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "cross-site", - "sec-fetch-storage-access": "active", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/upload/logo/logo.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/recommend/image/2021/01/08/6aabe5ccf91240cd8f7c5d6816f20b97.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/static/style/oos-recommend-bundle.css?v=20260806180032", { - "headers": { - "accept": "text/css,*/*;q=0.1", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=2", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "style", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/static/script/oos-recommend/oos-recommend-bundle.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=2", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("chrome-extension://bpoadfkcbjbfhfodiogcnhhhpibjhbnh/default_config.content.json", { - "referrer": "", - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/skin/default/layer.css?v=3.0.3303", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/static/script/oos-recommend/oos-test.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=2", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/iscroll.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=2", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/shopCartAnimatie.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=2", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/gksProduct.js?v=20260806180032", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=2", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/configure.css", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/basic.css", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/shop/shop-service/get-shop-service-config", { - "headers": { - "accept": "application/json, text/javascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": "[\"baiduStatCode\"]", - "method": "POST" -}); ; -fetch("https://www.ztdq.com/static/script/index.iife.js", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/iconfont/gks-web-icon/iconfont.woff", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/static/css/web-iconfont.css?version=1.1.1" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/css/iconfont/gks-icon/iconfont.woff", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/static/css/iconfont.css?2019" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/common/location/get-province-and-city-arr", { - "headers": { - "accept": "application/json, text/javascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/recommend/model-plugin-item-template-content/get-content-by-template-code?templateCode=43", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/dragula.js?_=1786729134189", { - "headers": { - "accept": "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/recommend/model-plugin-item-template-content/get-content-by-template-code?templateCode=29", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/recommend/model-plugin-item-template-content/get-content-by-template-code?templateCode=32", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/recommend/model-plugin-item-template-content/get-content-by-template-code?templateCode=45", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/event-tracking.js?v=${jsVersion}", { - "headers": { - "accept": "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "x-requested-with": "XMLHttpRequest", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/match/match-brand?keyword=3xLMZ1-0.5&_=1786729134190", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/match/check-search-using-v2?_=1786729134191", { - "headers": { - "accept": "application/json, text/javascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/recommend/model-plugin-item-template-content/get-content-by-template-code?templateCode=42&_=1786729134192", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=69a932b40981127b8e9b0194c4eabbd1", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/product/public/category/list-on-sale-category-tree?_=1786729134193", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/skin/default/loading-2.gif", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/static/script/skin/default/layer.css?v=3.0.3303" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/static/script/search-match.js?v=20260806180032", { - "headers": { - "accept": "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=0, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/layui/lay/modules/form.js", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/shop/shop-info/list-home-page-help-center-menu?_=1786729134194", { - "headers": { - "accept": "application/json, text/javascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json; charset=utf-8", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/recommend/image/2023/09/16/b749ec75e9dc4ba29af6758f479f1b6b.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/common/location/get-province-and-city-arr?_=1786729134195", { - "headers": { - "accept": "application/json, text/javascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/recommend/image/2023/10/10/0b61a6f054284d35a9a3ad8767374fbb.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/recommend/head-status-bar/get-qq-by-shop-id?_=1786729134196", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/images/QQ.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/recommend/image/2023/10/13/dffc91ed9534417eb46dcee822d254a7.jpg", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/upload/logo/favorites_icon.png?v=202676825941", { - "headers": { - "accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "image", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/product/image/9/2018/08/16/92607f3ef6024850bea27bc09a33627d.jpg", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/product/image/9/2018/08/15/82c33c444b2e48b49cce38e0dd49e964.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/product/image/9/2018/12/11/a1e319a1c8a2454da904f6bfca951e05.jpg", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/product/image/9/2018/08/15/e2e76ca399cd4e07b42afb58c1900809.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/product/image/9/2022/04/27/b94ad5914a6b45e6aeda80c62194c073.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/product/image/9/2022/04/27/697e20c54f764d1f85f1589874250c81.jpg", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/upload/product/image/9/2022/04/26/978f324f54a24920aac8293c6be9b383.png", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/layui/lay/modules/layer.js", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "script", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/recommend/guide/get-guide-by-user", { - "headers": { - "accept": "application/json, text/plain, */*", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": "{\"pagePath\":\"/search/match\"}", - "method": "POST" -}); ; -fetch("https://www.ztdq.com/search/match/match-model-v2", { - "headers": { - "accept": "application/json, text/javascript, */*; q=0.01", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": "{\"keyword\":\"3xLMZ1-0.5\",\"linkageNav\":true,\"pageIndex\":1,\"pageSize\":15}", - "method": "POST" -}); ; -fetch("https://www.ztdq.com/user/pre-login?returnUrl=%2Frecommend%2Fguide%2Fget-guide-by-user", { - "headers": { - "accept": "application/json, text/plain, */*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/coupon/coupon/get-soon-to-expire-coupon-view-by-user?_=1786729134197", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=5359fb1cb172c32aa52f4b73e94517e8", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/iscroll.js?v=20260806180032", { - "headers": { - "accept": "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "x-requested-with": "XMLHttpRequest", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/script/shopCartAnimatie.js?v=20260806180032", { - "headers": { - "accept": "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "x-requested-with": "XMLHttpRequest", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://static.gongkongsaas.com/static/images/select_model.png", { - "headers": { - "accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", - "accept-language": "zh-CN,zh;q=0.9", - "if-modified-since": "Mon, 06 Jul 2026 10:09:29 GMT", - "if-none-match": "\"6a4b7ed9-704\"", - "priority": "i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "image", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "cross-site", - "sec-fetch-storage-access": "active", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/layui/font/iconfont.woff?v=1.0.9", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/static/layui/css/layui.css" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/static/images/detail_no_image.jpg", { - "headers": { - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://image.gongkongsaas.com/general/shop/image/2018/08/09/51abfaf8648340dba54ff9529e93c35d.jpg", { - "headers": { - "accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", - "accept-language": "zh-CN,zh;q=0.9", - "priority": "i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "image", - "sec-fetch-mode": "no-cors", - "sec-fetch-site": "cross-site", - "sec-fetch-storage-access": "active", - "Referer": "https://www.ztdq.com/" - }, - "body": null, - "method": "GET" -}); ; -fetch("https://www.ztdq.com/search/query/oos-batch-tags", { - "headers": { - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/json", - "priority": "u=1, i", - "sec-ch-ua": "\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "cookie": "select_channel_pattern=; GUID=guid.84a8344f778096e7d29e84724df70962; areaCityCode=650100; areaProvinceCode=650000; traceId=bbcd1cf0cca12f0140131ba672552832", - "Referer": "https://www.ztdq.com/search/match?keyword=3xLMZ1-0.5" - }, - "body": "{\"pageType\":\"search\",\"items\":[{\"params\":[\"电流变比:600/5\",\"额定容量:5-3.75VA\",\"额定电压:500V\"],\"smId\":304329894},{\"params\":[\"电流变比:500/5\",\"额定容量:5-3.75VA\",\"额定电压:500V\"],\"smId\":304329893},{\"params\":[\"电流变比:400/5\",\"额定容量:5-3.75VA\",\"额定电压:500V\"],\"smId\":304329892},{\"params\":[\"电流变比:200/5\",\"额定容量:5-3.75VA\",\"额定电压:500V\"],\"smId\":304329889},{\"params\":[\"电流变比:300/5\",\"额定容量:5-3.75VA\",\"额定电压:500V\"],\"smId\":304329891},{\"params\":[\"电流变比:800/5\",\"额定容量:10-3.75VA\",\"额定电压:500V\"],\"smId\":304329895}]}", - "method": "POST" -}); \ No newline at end of file diff --git a/cadbt/cadbt/cadcj/新建项目.cs b/cadbt/cadbt/cadcj/新建项目.cs deleted file mode 100644 index 494c388..0000000 --- a/cadbt/cadbt/cadcj/新建项目.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace MyApp -{ - /// - /// 新建项目 窗口(简化版,不依赖企业信息)。 - /// UI 布局见 新建项目.ui.cs,本文件只含交互逻辑。 - /// - public partial class 新建项目 : Form - { - // 价格格式化选项(与主项目 价格格式化.cs 保持一致) - private static readonly string[] 小数位选项 = - { - "保留整数", "保留1位小数", "保留2位小数", "保留3位小数", - "保留4位小数", "保留5位小数", "保留6位小数" - }; - private static readonly string[] 取整方式选项 = - { - "不取整", "四舍五入", "四舍五入到角", "四舍五入到元", - "四舍五入到十元", "向上取整到元", "最近5元", "最近10元" - }; - - private readonly string _dbPath; - private readonly string _tableName; - - public 新建项目() : this(null, null) { } - - /// 带数据库路径的构造函数(用于自动生成项目编号)。 - public 新建项目(string dbPath, string tableName) - { - InitializeComponent(); - _dbPath = dbPath; - _tableName = tableName; - InitPriceFormatCombos(); - this.Load += 新建项目_Load; - } - - private void InitPriceFormatCombos() - { - cmb单台价格.Items.Clear(); - cmb单台价格.Items.AddRange(小数位选项); - cmb项目总价.Items.Clear(); - cmb项目总价.Items.AddRange(小数位选项); - comboBox1.Items.Clear(); - comboBox1.Items.AddRange(取整方式选项); - comboBox2.Items.Clear(); - comboBox2.Items.AddRange(取整方式选项); - } - - private void 新建项目_Load(object sender, EventArgs e) - { - FillAutoFields(); - } - - /// 自动填充项目日期(当天)和项目编号(yyyyMMdd+3位序号)。 - private void FillAutoFields() - { - DateTime today = DateTime.Today; - txt项目日期.Text = today.ToString("yyyy-MM-dd"); - - string datePart = today.ToString("yyyyMMdd"); - int seq = GetNextSeqForDate(datePart); - txt项目编号.Text = datePart + seq.ToString("000"); - txt项目编号.ReadOnly = true; - txt项目编号.TabStop = false; - txt项目编号.BackColor = System.Drawing.SystemColors.Control; - } - - /// 查数据库当天最大序号+1,失败返回1。 - private int GetNextSeqForDate(string datePart) - { - if (string.IsNullOrEmpty(datePart) || - string.IsNullOrEmpty(_dbPath) || - string.IsNullOrEmpty(_tableName) || - !System.IO.File.Exists(_dbPath)) - { - return 1; - } - try - { - string connStr = "Data Source=" + _dbPath + ";Version=3;"; - using (var conn = new System.Data.SQLite.SQLiteConnection(connStr)) - { - conn.Open(); - string sql = - "SELECT MAX(CAST(SUBSTR(项目编号, 9) AS INTEGER)) " + - "FROM " + _tableName + " " + - "WHERE SUBSTR(项目编号, 1, 8) = '" + datePart + "';"; - using (var cmd = new System.Data.SQLite.SQLiteCommand(sql, conn)) - { - object result = cmd.ExecuteScalar(); - if (result == null || result == DBNull.Value) return 1; - int maxSeq; - if (int.TryParse(result.ToString(), out maxSeq)) return maxSeq + 1; - return 1; - } - } - } - catch { return 1; } - } - - /// 收集对话框字段,以列名为键返回(供 Form3 写入数据库)。 - public Dictionary GetInputValues() - { - var values = new Dictionary(); - AddIfNotEmpty(values, "项目编号", txt项目编号.Text); - AddIfNotEmpty(values, "项目日期", txt项目日期.Text); - AddIfNotEmpty(values, "项目名称", txt项目名称.Text); - AddIfNotEmpty(values, "客户名称", txt客户名称.Text); - AddIfNotEmpty(values, "客户地址", txt客户地址.Text); - AddIfNotEmpty(values, "联系人", txt联系人.Text); - AddIfNotEmpty(values, "联系电话", txt联系电话.Text); - AddIfNotEmpty(values, "备注", txt备注.Text); - AddIfNotEmpty(values, "成套厂名称", txt成套厂名称.Text); - AddIfNotEmpty(values, "成套厂地址", txt成套厂地址.Text); - AddIfNotEmpty(values, "成套厂联系人", txt成套厂联系人.Text); - AddIfNotEmpty(values, "成套厂联系电话", txt成套厂联系电话.Text); - values["单台小数位"] = (cmb单台价格.SelectedItem ?? cmb单台价格.Text ?? "").ToString(); - values["项目小数位"] = (cmb项目总价.SelectedItem ?? cmb项目总价.Text ?? "").ToString(); - values["单台取整方式"] = (comboBox1.SelectedItem ?? comboBox1.Text ?? "").ToString(); - values["项目取整方式"] = (comboBox2.SelectedItem ?? comboBox2.Text ?? "").ToString(); - return values; - } - - private static void AddIfNotEmpty(Dictionary dict, string key, string value) - { - if (!string.IsNullOrWhiteSpace(value)) dict[key] = value.Trim(); - } - } -} diff --git a/cadbt/cadbt/cadcj/新建项目.ui.cs b/cadbt/cadbt/cadcj/新建项目.ui.cs deleted file mode 100644 index 37aeee3..0000000 --- a/cadbt/cadbt/cadcj/新建项目.ui.cs +++ /dev/null @@ -1,1337 +0,0 @@ -namespace MyApp -{ - public partial class 新建项目 : System.Windows.Forms.Form - { - /// 必需的设计器变量。 - private System.ComponentModel.IContainer components = null; - - /// 清理正在使用的资源。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows 窗体设计器生成的代码 - - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - - this.lbl项目编号 = new System.Windows.Forms.Label(); - this.txt项目编号 = new System.Windows.Forms.TextBox(); - this.lbl项目日期 = new System.Windows.Forms.Label(); - this.txt项目日期 = new System.Windows.Forms.TextBox(); - this.lbl项目名称 = new System.Windows.Forms.Label(); - this.txt项目名称 = new System.Windows.Forms.TextBox(); - this.lbl客户名称 = new System.Windows.Forms.Label(); - this.txt客户名称 = new System.Windows.Forms.TextBox(); - this.btn选择客户 = new System.Windows.Forms.Button(); - this.lbl客户地址 = new System.Windows.Forms.Label(); - this.txt客户地址 = new System.Windows.Forms.TextBox(); - this.lbl联系人 = new System.Windows.Forms.Label(); - this.txt联系人 = new System.Windows.Forms.TextBox(); - this.lbl联系电话 = new System.Windows.Forms.Label(); - this.txt联系电话 = new System.Windows.Forms.TextBox(); - this.lbl成套厂名称 = new System.Windows.Forms.Label(); - this.txt成套厂名称 = new System.Windows.Forms.TextBox(); - this.lbl成套厂地址 = new System.Windows.Forms.Label(); - this.txt成套厂地址 = new System.Windows.Forms.TextBox(); - this.lbl成套厂联系人 = new System.Windows.Forms.Label(); - this.txt成套厂联系人 = new System.Windows.Forms.TextBox(); - this.lbl成套厂联系电话 = new System.Windows.Forms.Label(); - this.txt成套厂联系电话 = new System.Windows.Forms.TextBox(); - this.lbl报出方式 = new System.Windows.Forms.Label(); - this.cmb报出方式 = new System.Windows.Forms.ComboBox(); - this.lbl箱柜模板 = new System.Windows.Forms.Label(); - this.cmb箱柜模板 = new System.Windows.Forms.ComboBox(); - this.lbl单台价格 = new System.Windows.Forms.Label(); - this.cmb单台价格 = new System.Windows.Forms.ComboBox(); - this.lbl项目总价 = new System.Windows.Forms.Label(); - this.lbl备注 = new System.Windows.Forms.Label(); - this.txt备注 = new System.Windows.Forms.TextBox(); - this.btn确定 = new System.Windows.Forms.Button(); - this.btn取消 = new System.Windows.Forms.Button(); - this.comboBox1 = new System.Windows.Forms.ComboBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.comboBox2 = new System.Windows.Forms.ComboBox(); - this.cmb项目总价 = new System.Windows.Forms.ComboBox(); - this.SuspendLayout(); - // - // lbl项目编号 - // - this.lbl项目编号.Dock = System.Windows.Forms.DockStyle.None; - this.lbl项目编号.AutoSize = false; - this.lbl项目编号.AutoEllipsis = false; - this.lbl项目编号.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl项目编号.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl项目编号.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl项目编号.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl项目编号.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl项目编号.UseCompatibleTextRendering = false; - this.lbl项目编号.UseMnemonic = true; - this.lbl项目编号.BackColor = System.Drawing.SystemColors.Control; - this.lbl项目编号.Enabled = true; - this.lbl项目编号.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl项目编号.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl项目编号.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl项目编号.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl项目编号.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl项目编号.TabIndex = 0; - this.lbl项目编号.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl项目编号.Size = new System.Drawing.Size(70, 23); - this.lbl项目编号.Location = new System.Drawing.Point(20, 25); - this.lbl项目编号.Text = "项目编号:"; - this.lbl项目编号.Name = "lbl项目编号"; - - // - // txt项目编号 - // - this.txt项目编号.Dock = System.Windows.Forms.DockStyle.None; - this.txt项目编号.AcceptsReturn = false; - this.txt项目编号.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt项目编号.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt项目编号.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt项目编号.Multiline = false; - this.txt项目编号.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt项目编号.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt项目编号.UseSystemPasswordChar = false; - this.txt项目编号.AcceptsTab = false; - this.txt项目编号.ShortcutsEnabled = true; - this.txt项目编号.BackColor = System.Drawing.SystemColors.Window; - this.txt项目编号.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt项目编号.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt项目编号.HideSelection = true; - this.txt项目编号.MaxLength = 32767; - this.txt项目编号.ReadOnly = false; - this.txt项目编号.WordWrap = true; - this.txt项目编号.Enabled = true; - this.txt项目编号.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt项目编号.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt项目编号.MaximumSize = new System.Drawing.Size(0, 0); - this.txt项目编号.MinimumSize = new System.Drawing.Size(0, 0); - this.txt项目编号.TabIndex = 0; - this.txt项目编号.TabStop = true; - this.txt项目编号.Size = new System.Drawing.Size(220, 21); - this.txt项目编号.Location = new System.Drawing.Point(95, 25); - this.txt项目编号.Name = "txt项目编号"; - - // - // lbl项目日期 - // - this.lbl项目日期.Dock = System.Windows.Forms.DockStyle.None; - this.lbl项目日期.AutoSize = false; - this.lbl项目日期.AutoEllipsis = false; - this.lbl项目日期.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl项目日期.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl项目日期.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl项目日期.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl项目日期.TextAlign = System.Drawing.ContentAlignment.TopLeft; - this.lbl项目日期.UseCompatibleTextRendering = false; - this.lbl项目日期.UseMnemonic = true; - this.lbl项目日期.BackColor = System.Drawing.SystemColors.Control; - this.lbl项目日期.Enabled = true; - this.lbl项目日期.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl项目日期.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl项目日期.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl项目日期.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl项目日期.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl项目日期.TabIndex = 1; - this.lbl项目日期.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl项目日期.Size = new System.Drawing.Size(70, 18); - this.lbl项目日期.Location = new System.Drawing.Point(380, 28); - this.lbl项目日期.Text = "项目日期:"; - this.lbl项目日期.Name = "lbl项目日期"; - - // - // txt项目日期 - // - this.txt项目日期.Dock = System.Windows.Forms.DockStyle.None; - this.txt项目日期.AcceptsReturn = false; - this.txt项目日期.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt项目日期.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt项目日期.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt项目日期.Multiline = false; - this.txt项目日期.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt项目日期.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt项目日期.UseSystemPasswordChar = false; - this.txt项目日期.AcceptsTab = false; - this.txt项目日期.ShortcutsEnabled = true; - this.txt项目日期.BackColor = System.Drawing.SystemColors.Window; - this.txt项目日期.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt项目日期.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt项目日期.HideSelection = true; - this.txt项目日期.MaxLength = 32767; - this.txt项目日期.ReadOnly = false; - this.txt项目日期.WordWrap = true; - this.txt项目日期.Enabled = true; - this.txt项目日期.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt项目日期.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt项目日期.MaximumSize = new System.Drawing.Size(0, 0); - this.txt项目日期.MinimumSize = new System.Drawing.Size(0, 0); - this.txt项目日期.TabIndex = 1; - this.txt项目日期.TabStop = true; - this.txt项目日期.Size = new System.Drawing.Size(210, 21); - this.txt项目日期.Location = new System.Drawing.Point(455, 25); - this.txt项目日期.Name = "txt项目日期"; - - // - // lbl项目名称 - // - this.lbl项目名称.Dock = System.Windows.Forms.DockStyle.None; - this.lbl项目名称.AutoSize = false; - this.lbl项目名称.AutoEllipsis = false; - this.lbl项目名称.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl项目名称.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl项目名称.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl项目名称.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl项目名称.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl项目名称.UseCompatibleTextRendering = false; - this.lbl项目名称.UseMnemonic = true; - this.lbl项目名称.BackColor = System.Drawing.SystemColors.Control; - this.lbl项目名称.Enabled = true; - this.lbl项目名称.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl项目名称.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl项目名称.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl项目名称.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl项目名称.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl项目名称.TabIndex = 2; - this.lbl项目名称.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl项目名称.Size = new System.Drawing.Size(70, 23); - this.lbl项目名称.Location = new System.Drawing.Point(20, 55); - this.lbl项目名称.Text = "项目名称:"; - this.lbl项目名称.Name = "lbl项目名称"; - - // - // txt项目名称 - // - this.txt项目名称.Dock = System.Windows.Forms.DockStyle.None; - this.txt项目名称.AcceptsReturn = false; - this.txt项目名称.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt项目名称.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt项目名称.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt项目名称.Multiline = false; - this.txt项目名称.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt项目名称.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt项目名称.UseSystemPasswordChar = false; - this.txt项目名称.AcceptsTab = false; - this.txt项目名称.ShortcutsEnabled = true; - this.txt项目名称.BackColor = System.Drawing.SystemColors.Window; - this.txt项目名称.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt项目名称.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt项目名称.HideSelection = true; - this.txt项目名称.MaxLength = 32767; - this.txt项目名称.ReadOnly = false; - this.txt项目名称.WordWrap = true; - this.txt项目名称.Enabled = true; - this.txt项目名称.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt项目名称.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt项目名称.MaximumSize = new System.Drawing.Size(0, 0); - this.txt项目名称.MinimumSize = new System.Drawing.Size(0, 0); - this.txt项目名称.TabIndex = 2; - this.txt项目名称.TabStop = true; - this.txt项目名称.Size = new System.Drawing.Size(570, 21); - this.txt项目名称.Location = new System.Drawing.Point(95, 55); - this.txt项目名称.Name = "txt项目名称"; - - // - // lbl客户名称 - // - this.lbl客户名称.Dock = System.Windows.Forms.DockStyle.None; - this.lbl客户名称.AutoSize = false; - this.lbl客户名称.AutoEllipsis = false; - this.lbl客户名称.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl客户名称.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl客户名称.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl客户名称.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl客户名称.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl客户名称.UseCompatibleTextRendering = false; - this.lbl客户名称.UseMnemonic = true; - this.lbl客户名称.BackColor = System.Drawing.SystemColors.Control; - this.lbl客户名称.Enabled = true; - this.lbl客户名称.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl客户名称.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl客户名称.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl客户名称.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl客户名称.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl客户名称.TabIndex = 3; - this.lbl客户名称.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl客户名称.Size = new System.Drawing.Size(70, 23); - this.lbl客户名称.Location = new System.Drawing.Point(20, 85); - this.lbl客户名称.Text = "客户名称:"; - this.lbl客户名称.Name = "lbl客户名称"; - - // - // txt客户名称 - // - this.txt客户名称.Dock = System.Windows.Forms.DockStyle.None; - this.txt客户名称.AcceptsReturn = false; - this.txt客户名称.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt客户名称.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt客户名称.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt客户名称.Multiline = false; - this.txt客户名称.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt客户名称.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt客户名称.UseSystemPasswordChar = false; - this.txt客户名称.AcceptsTab = false; - this.txt客户名称.ShortcutsEnabled = true; - this.txt客户名称.BackColor = System.Drawing.SystemColors.Window; - this.txt客户名称.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt客户名称.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt客户名称.HideSelection = true; - this.txt客户名称.MaxLength = 32767; - this.txt客户名称.ReadOnly = false; - this.txt客户名称.WordWrap = true; - this.txt客户名称.Enabled = true; - this.txt客户名称.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt客户名称.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt客户名称.MaximumSize = new System.Drawing.Size(0, 0); - this.txt客户名称.MinimumSize = new System.Drawing.Size(0, 0); - this.txt客户名称.TabIndex = 3; - this.txt客户名称.TabStop = true; - this.txt客户名称.Size = new System.Drawing.Size(479, 21); - this.txt客户名称.Location = new System.Drawing.Point(95, 85); - this.txt客户名称.Name = "txt客户名称"; - - // - // btn选择客户 - // - this.btn选择客户.Dock = System.Windows.Forms.DockStyle.None; - this.btn选择客户.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.btn选择客户.DialogResult = System.Windows.Forms.DialogResult.None; - this.btn选择客户.AutoEllipsis = false; - this.btn选择客户.AutoSize = false; - this.btn选择客户.BackColor = System.Drawing.SystemColors.Control; - this.btn选择客户.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.btn选择客户.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.btn选择客户.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.btn选择客户.TextImageRelation = System.Windows.Forms.TextImageRelation.Overlay; - this.btn选择客户.UseMnemonic = true; - this.btn选择客户.UseCompatibleTextRendering = false; - this.btn选择客户.UseVisualStyleBackColor = true; - this.btn选择客户.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.btn选择客户.Enabled = true; - this.btn选择客户.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.btn选择客户.ForeColor = System.Drawing.SystemColors.ControlText; - this.btn选择客户.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.btn选择客户.MaximumSize = new System.Drawing.Size(0, 0); - this.btn选择客户.MinimumSize = new System.Drawing.Size(0, 0); - this.btn选择客户.TabIndex = 4; - this.btn选择客户.TabStop = true; - this.btn选择客户.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.btn选择客户.Size = new System.Drawing.Size(85, 23); - this.btn选择客户.Location = new System.Drawing.Point(580, 85); - this.btn选择客户.Text = "选择客户"; - this.btn选择客户.Name = "btn选择客户"; - - // - // lbl客户地址 - // - this.lbl客户地址.Dock = System.Windows.Forms.DockStyle.None; - this.lbl客户地址.AutoSize = false; - this.lbl客户地址.AutoEllipsis = false; - this.lbl客户地址.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl客户地址.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl客户地址.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl客户地址.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl客户地址.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl客户地址.UseCompatibleTextRendering = false; - this.lbl客户地址.UseMnemonic = true; - this.lbl客户地址.BackColor = System.Drawing.SystemColors.Control; - this.lbl客户地址.Enabled = true; - this.lbl客户地址.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl客户地址.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl客户地址.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl客户地址.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl客户地址.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl客户地址.TabIndex = 5; - this.lbl客户地址.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl客户地址.Size = new System.Drawing.Size(70, 23); - this.lbl客户地址.Location = new System.Drawing.Point(20, 115); - this.lbl客户地址.Text = "客户地址:"; - this.lbl客户地址.Name = "lbl客户地址"; - - // - // txt客户地址 - // - this.txt客户地址.Dock = System.Windows.Forms.DockStyle.None; - this.txt客户地址.AcceptsReturn = false; - this.txt客户地址.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt客户地址.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt客户地址.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt客户地址.Multiline = false; - this.txt客户地址.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt客户地址.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt客户地址.UseSystemPasswordChar = false; - this.txt客户地址.AcceptsTab = false; - this.txt客户地址.ShortcutsEnabled = true; - this.txt客户地址.BackColor = System.Drawing.SystemColors.Window; - this.txt客户地址.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt客户地址.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt客户地址.HideSelection = true; - this.txt客户地址.MaxLength = 32767; - this.txt客户地址.ReadOnly = false; - this.txt客户地址.WordWrap = true; - this.txt客户地址.Enabled = true; - this.txt客户地址.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt客户地址.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt客户地址.MaximumSize = new System.Drawing.Size(0, 0); - this.txt客户地址.MinimumSize = new System.Drawing.Size(0, 0); - this.txt客户地址.TabIndex = 5; - this.txt客户地址.TabStop = true; - this.txt客户地址.Size = new System.Drawing.Size(570, 21); - this.txt客户地址.Location = new System.Drawing.Point(95, 115); - this.txt客户地址.Name = "txt客户地址"; - - // - // lbl联系人 - // - this.lbl联系人.Dock = System.Windows.Forms.DockStyle.None; - this.lbl联系人.AutoSize = false; - this.lbl联系人.AutoEllipsis = false; - this.lbl联系人.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl联系人.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl联系人.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl联系人.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl联系人.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl联系人.UseCompatibleTextRendering = false; - this.lbl联系人.UseMnemonic = true; - this.lbl联系人.BackColor = System.Drawing.SystemColors.Control; - this.lbl联系人.Enabled = true; - this.lbl联系人.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl联系人.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl联系人.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl联系人.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl联系人.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl联系人.TabIndex = 6; - this.lbl联系人.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl联系人.Size = new System.Drawing.Size(60, 23); - this.lbl联系人.Location = new System.Drawing.Point(30, 145); - this.lbl联系人.Text = "联系人:"; - this.lbl联系人.Name = "lbl联系人"; - - // - // txt联系人 - // - this.txt联系人.Dock = System.Windows.Forms.DockStyle.None; - this.txt联系人.AcceptsReturn = false; - this.txt联系人.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt联系人.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt联系人.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt联系人.Multiline = false; - this.txt联系人.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt联系人.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt联系人.UseSystemPasswordChar = false; - this.txt联系人.AcceptsTab = false; - this.txt联系人.ShortcutsEnabled = true; - this.txt联系人.BackColor = System.Drawing.SystemColors.Window; - this.txt联系人.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt联系人.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt联系人.HideSelection = true; - this.txt联系人.MaxLength = 32767; - this.txt联系人.ReadOnly = false; - this.txt联系人.WordWrap = true; - this.txt联系人.Enabled = true; - this.txt联系人.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt联系人.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt联系人.MaximumSize = new System.Drawing.Size(0, 0); - this.txt联系人.MinimumSize = new System.Drawing.Size(0, 0); - this.txt联系人.TabIndex = 6; - this.txt联系人.TabStop = true; - this.txt联系人.Size = new System.Drawing.Size(220, 21); - this.txt联系人.Location = new System.Drawing.Point(95, 145); - this.txt联系人.Name = "txt联系人"; - - // - // lbl联系电话 - // - this.lbl联系电话.Dock = System.Windows.Forms.DockStyle.None; - this.lbl联系电话.AutoSize = false; - this.lbl联系电话.AutoEllipsis = false; - this.lbl联系电话.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl联系电话.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl联系电话.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl联系电话.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl联系电话.TextAlign = System.Drawing.ContentAlignment.TopLeft; - this.lbl联系电话.UseCompatibleTextRendering = false; - this.lbl联系电话.UseMnemonic = true; - this.lbl联系电话.BackColor = System.Drawing.SystemColors.Control; - this.lbl联系电话.Enabled = true; - this.lbl联系电话.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl联系电话.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl联系电话.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl联系电话.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl联系电话.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl联系电话.TabIndex = 7; - this.lbl联系电话.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl联系电话.Size = new System.Drawing.Size(70, 21); - this.lbl联系电话.Location = new System.Drawing.Point(380, 145); - this.lbl联系电话.Text = "联系电话:"; - this.lbl联系电话.Name = "lbl联系电话"; - - // - // txt联系电话 - // - this.txt联系电话.Dock = System.Windows.Forms.DockStyle.None; - this.txt联系电话.AcceptsReturn = false; - this.txt联系电话.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt联系电话.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt联系电话.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt联系电话.Multiline = false; - this.txt联系电话.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt联系电话.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt联系电话.UseSystemPasswordChar = false; - this.txt联系电话.AcceptsTab = false; - this.txt联系电话.ShortcutsEnabled = true; - this.txt联系电话.BackColor = System.Drawing.SystemColors.Window; - this.txt联系电话.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt联系电话.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt联系电话.HideSelection = true; - this.txt联系电话.MaxLength = 32767; - this.txt联系电话.ReadOnly = false; - this.txt联系电话.WordWrap = true; - this.txt联系电话.Enabled = true; - this.txt联系电话.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt联系电话.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt联系电话.MaximumSize = new System.Drawing.Size(0, 0); - this.txt联系电话.MinimumSize = new System.Drawing.Size(0, 0); - this.txt联系电话.TabIndex = 7; - this.txt联系电话.TabStop = true; - this.txt联系电话.Size = new System.Drawing.Size(210, 21); - this.txt联系电话.Location = new System.Drawing.Point(455, 145); - this.txt联系电话.Name = "txt联系电话"; - - // - // lbl成套厂名称 - // - this.lbl成套厂名称.Dock = System.Windows.Forms.DockStyle.None; - this.lbl成套厂名称.AutoSize = false; - this.lbl成套厂名称.AutoEllipsis = false; - this.lbl成套厂名称.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl成套厂名称.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl成套厂名称.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl成套厂名称.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl成套厂名称.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl成套厂名称.UseCompatibleTextRendering = false; - this.lbl成套厂名称.UseMnemonic = true; - this.lbl成套厂名称.BackColor = System.Drawing.SystemColors.Control; - this.lbl成套厂名称.Enabled = true; - this.lbl成套厂名称.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl成套厂名称.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl成套厂名称.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl成套厂名称.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂名称.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂名称.TabIndex = 8; - this.lbl成套厂名称.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl成套厂名称.Size = new System.Drawing.Size(80, 23); - this.lbl成套厂名称.Location = new System.Drawing.Point(10, 175); - this.lbl成套厂名称.Text = "成套厂名称:"; - this.lbl成套厂名称.Name = "lbl成套厂名称"; - - // - // txt成套厂名称 - // - this.txt成套厂名称.Dock = System.Windows.Forms.DockStyle.None; - this.txt成套厂名称.AcceptsReturn = false; - this.txt成套厂名称.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt成套厂名称.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt成套厂名称.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt成套厂名称.Multiline = false; - this.txt成套厂名称.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt成套厂名称.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt成套厂名称.UseSystemPasswordChar = false; - this.txt成套厂名称.AcceptsTab = false; - this.txt成套厂名称.ShortcutsEnabled = true; - this.txt成套厂名称.BackColor = System.Drawing.SystemColors.Window; - this.txt成套厂名称.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt成套厂名称.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt成套厂名称.HideSelection = true; - this.txt成套厂名称.MaxLength = 32767; - this.txt成套厂名称.ReadOnly = false; - this.txt成套厂名称.WordWrap = true; - this.txt成套厂名称.Enabled = true; - this.txt成套厂名称.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt成套厂名称.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt成套厂名称.MaximumSize = new System.Drawing.Size(0, 0); - this.txt成套厂名称.MinimumSize = new System.Drawing.Size(0, 0); - this.txt成套厂名称.TabIndex = 8; - this.txt成套厂名称.TabStop = true; - this.txt成套厂名称.Size = new System.Drawing.Size(570, 21); - this.txt成套厂名称.Location = new System.Drawing.Point(95, 175); - this.txt成套厂名称.Name = "txt成套厂名称"; - - // - // lbl成套厂地址 - // - this.lbl成套厂地址.Dock = System.Windows.Forms.DockStyle.None; - this.lbl成套厂地址.AutoSize = false; - this.lbl成套厂地址.AutoEllipsis = false; - this.lbl成套厂地址.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl成套厂地址.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl成套厂地址.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl成套厂地址.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl成套厂地址.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl成套厂地址.UseCompatibleTextRendering = false; - this.lbl成套厂地址.UseMnemonic = true; - this.lbl成套厂地址.BackColor = System.Drawing.SystemColors.Control; - this.lbl成套厂地址.Enabled = true; - this.lbl成套厂地址.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl成套厂地址.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl成套厂地址.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl成套厂地址.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂地址.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂地址.TabIndex = 9; - this.lbl成套厂地址.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl成套厂地址.Size = new System.Drawing.Size(80, 23); - this.lbl成套厂地址.Location = new System.Drawing.Point(10, 205); - this.lbl成套厂地址.Text = "成套厂地址:"; - this.lbl成套厂地址.Name = "lbl成套厂地址"; - - // - // txt成套厂地址 - // - this.txt成套厂地址.Dock = System.Windows.Forms.DockStyle.None; - this.txt成套厂地址.AcceptsReturn = false; - this.txt成套厂地址.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt成套厂地址.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt成套厂地址.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt成套厂地址.Multiline = false; - this.txt成套厂地址.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt成套厂地址.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt成套厂地址.UseSystemPasswordChar = false; - this.txt成套厂地址.AcceptsTab = false; - this.txt成套厂地址.ShortcutsEnabled = true; - this.txt成套厂地址.BackColor = System.Drawing.SystemColors.Window; - this.txt成套厂地址.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt成套厂地址.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt成套厂地址.HideSelection = true; - this.txt成套厂地址.MaxLength = 32767; - this.txt成套厂地址.ReadOnly = false; - this.txt成套厂地址.WordWrap = true; - this.txt成套厂地址.Enabled = true; - this.txt成套厂地址.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt成套厂地址.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt成套厂地址.MaximumSize = new System.Drawing.Size(0, 0); - this.txt成套厂地址.MinimumSize = new System.Drawing.Size(0, 0); - this.txt成套厂地址.TabIndex = 9; - this.txt成套厂地址.TabStop = true; - this.txt成套厂地址.Size = new System.Drawing.Size(570, 21); - this.txt成套厂地址.Location = new System.Drawing.Point(95, 205); - this.txt成套厂地址.Name = "txt成套厂地址"; - - // - // lbl成套厂联系人 - // - this.lbl成套厂联系人.Dock = System.Windows.Forms.DockStyle.None; - this.lbl成套厂联系人.AutoSize = false; - this.lbl成套厂联系人.AutoEllipsis = false; - this.lbl成套厂联系人.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl成套厂联系人.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl成套厂联系人.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl成套厂联系人.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl成套厂联系人.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl成套厂联系人.UseCompatibleTextRendering = false; - this.lbl成套厂联系人.UseMnemonic = true; - this.lbl成套厂联系人.BackColor = System.Drawing.SystemColors.Control; - this.lbl成套厂联系人.Enabled = true; - this.lbl成套厂联系人.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl成套厂联系人.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl成套厂联系人.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl成套厂联系人.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂联系人.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂联系人.TabIndex = 10; - this.lbl成套厂联系人.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl成套厂联系人.Size = new System.Drawing.Size(60, 23); - this.lbl成套厂联系人.Location = new System.Drawing.Point(30, 235); - this.lbl成套厂联系人.Text = "联系人:"; - this.lbl成套厂联系人.Name = "lbl成套厂联系人"; - - // - // txt成套厂联系人 - // - this.txt成套厂联系人.Dock = System.Windows.Forms.DockStyle.None; - this.txt成套厂联系人.AcceptsReturn = false; - this.txt成套厂联系人.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt成套厂联系人.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt成套厂联系人.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt成套厂联系人.Multiline = false; - this.txt成套厂联系人.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt成套厂联系人.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt成套厂联系人.UseSystemPasswordChar = false; - this.txt成套厂联系人.AcceptsTab = false; - this.txt成套厂联系人.ShortcutsEnabled = true; - this.txt成套厂联系人.BackColor = System.Drawing.SystemColors.Window; - this.txt成套厂联系人.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt成套厂联系人.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt成套厂联系人.HideSelection = true; - this.txt成套厂联系人.MaxLength = 32767; - this.txt成套厂联系人.ReadOnly = false; - this.txt成套厂联系人.WordWrap = true; - this.txt成套厂联系人.Enabled = true; - this.txt成套厂联系人.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt成套厂联系人.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt成套厂联系人.MaximumSize = new System.Drawing.Size(0, 0); - this.txt成套厂联系人.MinimumSize = new System.Drawing.Size(0, 0); - this.txt成套厂联系人.TabIndex = 10; - this.txt成套厂联系人.TabStop = true; - this.txt成套厂联系人.Size = new System.Drawing.Size(220, 21); - this.txt成套厂联系人.Location = new System.Drawing.Point(95, 235); - this.txt成套厂联系人.Name = "txt成套厂联系人"; - - // - // lbl成套厂联系电话 - // - this.lbl成套厂联系电话.Dock = System.Windows.Forms.DockStyle.None; - this.lbl成套厂联系电话.AutoSize = false; - this.lbl成套厂联系电话.AutoEllipsis = false; - this.lbl成套厂联系电话.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl成套厂联系电话.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl成套厂联系电话.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl成套厂联系电话.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl成套厂联系电话.TextAlign = System.Drawing.ContentAlignment.TopLeft; - this.lbl成套厂联系电话.UseCompatibleTextRendering = false; - this.lbl成套厂联系电话.UseMnemonic = true; - this.lbl成套厂联系电话.BackColor = System.Drawing.SystemColors.Control; - this.lbl成套厂联系电话.Enabled = true; - this.lbl成套厂联系电话.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl成套厂联系电话.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl成套厂联系电话.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl成套厂联系电话.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂联系电话.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl成套厂联系电话.TabIndex = 11; - this.lbl成套厂联系电话.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl成套厂联系电话.Size = new System.Drawing.Size(70, 21); - this.lbl成套厂联系电话.Location = new System.Drawing.Point(380, 235); - this.lbl成套厂联系电话.Text = "联系电话:"; - this.lbl成套厂联系电话.Name = "lbl成套厂联系电话"; - - // - // txt成套厂联系电话 - // - this.txt成套厂联系电话.Dock = System.Windows.Forms.DockStyle.None; - this.txt成套厂联系电话.AcceptsReturn = false; - this.txt成套厂联系电话.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt成套厂联系电话.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt成套厂联系电话.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt成套厂联系电话.Multiline = false; - this.txt成套厂联系电话.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt成套厂联系电话.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt成套厂联系电话.UseSystemPasswordChar = false; - this.txt成套厂联系电话.AcceptsTab = false; - this.txt成套厂联系电话.ShortcutsEnabled = true; - this.txt成套厂联系电话.BackColor = System.Drawing.SystemColors.Window; - this.txt成套厂联系电话.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt成套厂联系电话.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt成套厂联系电话.HideSelection = true; - this.txt成套厂联系电话.MaxLength = 32767; - this.txt成套厂联系电话.ReadOnly = false; - this.txt成套厂联系电话.WordWrap = true; - this.txt成套厂联系电话.Enabled = true; - this.txt成套厂联系电话.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt成套厂联系电话.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt成套厂联系电话.MaximumSize = new System.Drawing.Size(0, 0); - this.txt成套厂联系电话.MinimumSize = new System.Drawing.Size(0, 0); - this.txt成套厂联系电话.TabIndex = 11; - this.txt成套厂联系电话.TabStop = true; - this.txt成套厂联系电话.Size = new System.Drawing.Size(210, 21); - this.txt成套厂联系电话.Location = new System.Drawing.Point(455, 232); - this.txt成套厂联系电话.Name = "txt成套厂联系电话"; - - // - // lbl报出方式 - // - this.lbl报出方式.Dock = System.Windows.Forms.DockStyle.None; - this.lbl报出方式.AutoSize = false; - this.lbl报出方式.AutoEllipsis = false; - this.lbl报出方式.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl报出方式.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl报出方式.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl报出方式.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl报出方式.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl报出方式.UseCompatibleTextRendering = false; - this.lbl报出方式.UseMnemonic = true; - this.lbl报出方式.BackColor = System.Drawing.SystemColors.Control; - this.lbl报出方式.Enabled = true; - this.lbl报出方式.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl报出方式.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl报出方式.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl报出方式.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl报出方式.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl报出方式.TabIndex = 12; - this.lbl报出方式.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl报出方式.Size = new System.Drawing.Size(70, 23); - this.lbl报出方式.Location = new System.Drawing.Point(20, 265); - this.lbl报出方式.Text = "报出方式:"; - this.lbl报出方式.Name = "lbl报出方式"; - - // - // cmb报出方式 - // - this.cmb报出方式.Dock = System.Windows.Forms.DockStyle.None; - this.cmb报出方式.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.cmb报出方式.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.cmb报出方式.BackColor = System.Drawing.SystemColors.Window; - this.cmb报出方式.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.cmb报出方式.DropDownWidth = 200; - this.cmb报出方式.DropDownHeight = 106; - this.cmb报出方式.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.cmb报出方式.ForeColor = System.Drawing.SystemColors.WindowText; - this.cmb报出方式.IntegralHeight = true; - this.cmb报出方式.ItemHeight = 12; - this.cmb报出方式.MaxDropDownItems = 8; - this.cmb报出方式.MaximumSize = new System.Drawing.Size(0, 0); - this.cmb报出方式.MinimumSize = new System.Drawing.Size(0, 0); - this.cmb报出方式.MaxLength = 0; - this.cmb报出方式.Sorted = false; - this.cmb报出方式.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.cmb报出方式.FormattingEnabled = false; - this.cmb报出方式.Enabled = true; - this.cmb报出方式.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.cmb报出方式.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.cmb报出方式.TabIndex = 12; - this.cmb报出方式.TabStop = true; - this.cmb报出方式.Size = new System.Drawing.Size(220, 20); - this.cmb报出方式.Location = new System.Drawing.Point(95, 265); - this.cmb报出方式.Text = "报出价=表价*采购系数*报出系数"; - this.cmb报出方式.Name = "cmb报出方式"; - - // - // lbl箱柜模板 - // - this.lbl箱柜模板.Dock = System.Windows.Forms.DockStyle.None; - this.lbl箱柜模板.AutoSize = false; - this.lbl箱柜模板.AutoEllipsis = false; - this.lbl箱柜模板.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl箱柜模板.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl箱柜模板.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl箱柜模板.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl箱柜模板.TextAlign = System.Drawing.ContentAlignment.TopLeft; - this.lbl箱柜模板.UseCompatibleTextRendering = false; - this.lbl箱柜模板.UseMnemonic = true; - this.lbl箱柜模板.BackColor = System.Drawing.SystemColors.Control; - this.lbl箱柜模板.Enabled = true; - this.lbl箱柜模板.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl箱柜模板.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl箱柜模板.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl箱柜模板.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl箱柜模板.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl箱柜模板.TabIndex = 13; - this.lbl箱柜模板.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl箱柜模板.Size = new System.Drawing.Size(70, 20); - this.lbl箱柜模板.Location = new System.Drawing.Point(380, 265); - this.lbl箱柜模板.Text = "箱柜模板:"; - this.lbl箱柜模板.Name = "lbl箱柜模板"; - - // - // cmb箱柜模板 - // - this.cmb箱柜模板.Dock = System.Windows.Forms.DockStyle.None; - this.cmb箱柜模板.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.cmb箱柜模板.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.cmb箱柜模板.BackColor = System.Drawing.SystemColors.Window; - this.cmb箱柜模板.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.cmb箱柜模板.DropDownWidth = 200; - this.cmb箱柜模板.DropDownHeight = 106; - this.cmb箱柜模板.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.cmb箱柜模板.ForeColor = System.Drawing.SystemColors.WindowText; - this.cmb箱柜模板.IntegralHeight = true; - this.cmb箱柜模板.ItemHeight = 12; - this.cmb箱柜模板.MaxDropDownItems = 8; - this.cmb箱柜模板.MaximumSize = new System.Drawing.Size(0, 0); - this.cmb箱柜模板.MinimumSize = new System.Drawing.Size(0, 0); - this.cmb箱柜模板.MaxLength = 0; - this.cmb箱柜模板.Sorted = false; - this.cmb箱柜模板.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.cmb箱柜模板.FormattingEnabled = false; - this.cmb箱柜模板.Enabled = true; - this.cmb箱柜模板.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.cmb箱柜模板.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.cmb箱柜模板.TabIndex = 13; - this.cmb箱柜模板.TabStop = true; - this.cmb箱柜模板.Size = new System.Drawing.Size(210, 20); - this.cmb箱柜模板.Location = new System.Drawing.Point(455, 262); - this.cmb箱柜模板.Name = "cmb箱柜模板"; - - // - // lbl单台价格 - // - this.lbl单台价格.Dock = System.Windows.Forms.DockStyle.None; - this.lbl单台价格.AutoSize = false; - this.lbl单台价格.AutoEllipsis = false; - this.lbl单台价格.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl单台价格.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl单台价格.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl单台价格.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl单台价格.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl单台价格.UseCompatibleTextRendering = false; - this.lbl单台价格.UseMnemonic = true; - this.lbl单台价格.BackColor = System.Drawing.SystemColors.Control; - this.lbl单台价格.Enabled = true; - this.lbl单台价格.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl单台价格.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl单台价格.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl单台价格.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl单台价格.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl单台价格.TabIndex = 14; - this.lbl单台价格.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl单台价格.Size = new System.Drawing.Size(70, 23); - this.lbl单台价格.Location = new System.Drawing.Point(20, 293); - this.lbl单台价格.Text = "单台价格:"; - this.lbl单台价格.Name = "lbl单台价格"; - - // - // cmb单台价格 - // - this.cmb单台价格.Dock = System.Windows.Forms.DockStyle.None; - this.cmb单台价格.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.cmb单台价格.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.cmb单台价格.BackColor = System.Drawing.SystemColors.Window; - this.cmb单台价格.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.cmb单台价格.DropDownWidth = 200; - this.cmb单台价格.DropDownHeight = 106; - this.cmb单台价格.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.cmb单台价格.ForeColor = System.Drawing.SystemColors.WindowText; - this.cmb单台价格.IntegralHeight = true; - this.cmb单台价格.ItemHeight = 12; - this.cmb单台价格.MaxDropDownItems = 8; - this.cmb单台价格.MaximumSize = new System.Drawing.Size(0, 0); - this.cmb单台价格.MinimumSize = new System.Drawing.Size(0, 0); - this.cmb单台价格.MaxLength = 0; - this.cmb单台价格.Sorted = false; - this.cmb单台价格.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.cmb单台价格.FormattingEnabled = false; - this.cmb单台价格.Enabled = true; - this.cmb单台价格.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.cmb单台价格.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.cmb单台价格.TabIndex = 14; - this.cmb单台价格.TabStop = true; - this.cmb单台价格.Size = new System.Drawing.Size(220, 20); - this.cmb单台价格.Location = new System.Drawing.Point(95, 293); - this.cmb单台价格.Text = "保留整数"; - this.cmb单台价格.Name = "cmb单台价格"; - - // - // lbl项目总价 - // - this.lbl项目总价.Dock = System.Windows.Forms.DockStyle.None; - this.lbl项目总价.AutoSize = false; - this.lbl项目总价.AutoEllipsis = false; - this.lbl项目总价.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl项目总价.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl项目总价.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl项目总价.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl项目总价.TextAlign = System.Drawing.ContentAlignment.TopLeft; - this.lbl项目总价.UseCompatibleTextRendering = false; - this.lbl项目总价.UseMnemonic = true; - this.lbl项目总价.BackColor = System.Drawing.SystemColors.Control; - this.lbl项目总价.Enabled = true; - this.lbl项目总价.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl项目总价.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl项目总价.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl项目总价.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl项目总价.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl项目总价.TabIndex = 15; - this.lbl项目总价.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl项目总价.Size = new System.Drawing.Size(70, 20); - this.lbl项目总价.Location = new System.Drawing.Point(379, 293); - this.lbl项目总价.Text = "项目总价:"; - this.lbl项目总价.Name = "lbl项目总价"; - - // - // lbl备注 - // - this.lbl备注.Dock = System.Windows.Forms.DockStyle.None; - this.lbl备注.AutoSize = false; - this.lbl备注.AutoEllipsis = false; - this.lbl备注.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lbl备注.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.lbl备注.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbl备注.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.lbl备注.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.lbl备注.UseCompatibleTextRendering = false; - this.lbl备注.UseMnemonic = true; - this.lbl备注.BackColor = System.Drawing.SystemColors.Control; - this.lbl备注.Enabled = true; - this.lbl备注.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbl备注.ForeColor = System.Drawing.SystemColors.ControlText; - this.lbl备注.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.lbl备注.MaximumSize = new System.Drawing.Size(0, 0); - this.lbl备注.MinimumSize = new System.Drawing.Size(0, 0); - this.lbl备注.TabIndex = 16; - this.lbl备注.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.lbl备注.Size = new System.Drawing.Size(46, 23); - this.lbl备注.Location = new System.Drawing.Point(44, 352); - this.lbl备注.Text = "备注:"; - this.lbl备注.Name = "lbl备注"; - - // - // txt备注 - // - this.txt备注.Dock = System.Windows.Forms.DockStyle.None; - this.txt备注.AcceptsReturn = false; - this.txt备注.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.txt备注.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.txt备注.CharacterCasing = System.Windows.Forms.CharacterCasing.Normal; - this.txt备注.Multiline = true; - this.txt备注.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.txt备注.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; - this.txt备注.UseSystemPasswordChar = false; - this.txt备注.AcceptsTab = false; - this.txt备注.ShortcutsEnabled = true; - this.txt备注.BackColor = System.Drawing.SystemColors.Window; - this.txt备注.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.txt备注.ForeColor = System.Drawing.SystemColors.WindowText; - this.txt备注.HideSelection = true; - this.txt备注.MaxLength = 32767; - this.txt备注.ReadOnly = false; - this.txt备注.WordWrap = true; - this.txt备注.Enabled = true; - this.txt备注.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.txt备注.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.txt备注.MaximumSize = new System.Drawing.Size(0, 0); - this.txt备注.MinimumSize = new System.Drawing.Size(0, 0); - this.txt备注.TabIndex = 16; - this.txt备注.TabStop = true; - this.txt备注.Size = new System.Drawing.Size(570, 80); - this.txt备注.Location = new System.Drawing.Point(95, 352); - this.txt备注.Name = "txt备注"; - - // - // btn确定 - // - this.btn确定.Dock = System.Windows.Forms.DockStyle.None; - this.btn确定.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.btn确定.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btn确定.AutoEllipsis = false; - this.btn确定.AutoSize = false; - this.btn确定.BackColor = System.Drawing.SystemColors.Control; - this.btn确定.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.btn确定.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.btn确定.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.btn确定.TextImageRelation = System.Windows.Forms.TextImageRelation.Overlay; - this.btn确定.UseMnemonic = true; - this.btn确定.UseCompatibleTextRendering = false; - this.btn确定.UseVisualStyleBackColor = true; - this.btn确定.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.btn确定.Enabled = true; - this.btn确定.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.btn确定.ForeColor = System.Drawing.SystemColors.ControlText; - this.btn确定.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.btn确定.MaximumSize = new System.Drawing.Size(0, 0); - this.btn确定.MinimumSize = new System.Drawing.Size(0, 0); - this.btn确定.TabIndex = 17; - this.btn确定.TabStop = true; - this.btn确定.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.btn确定.Size = new System.Drawing.Size(100, 28); - this.btn确定.Location = new System.Drawing.Point(455, 449); - this.btn确定.Text = "确定"; - this.btn确定.Name = "btn确定"; - - // - // btn取消 - // - this.btn取消.Dock = System.Windows.Forms.DockStyle.None; - this.btn取消.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.btn取消.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btn取消.AutoEllipsis = false; - this.btn取消.AutoSize = false; - this.btn取消.BackColor = System.Drawing.SystemColors.Control; - this.btn取消.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.btn取消.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.btn取消.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.btn取消.TextImageRelation = System.Windows.Forms.TextImageRelation.Overlay; - this.btn取消.UseMnemonic = true; - this.btn取消.UseCompatibleTextRendering = false; - this.btn取消.UseVisualStyleBackColor = true; - this.btn取消.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.btn取消.Enabled = true; - this.btn取消.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.btn取消.ForeColor = System.Drawing.SystemColors.ControlText; - this.btn取消.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.btn取消.MaximumSize = new System.Drawing.Size(0, 0); - this.btn取消.MinimumSize = new System.Drawing.Size(0, 0); - this.btn取消.TabIndex = 18; - this.btn取消.TabStop = true; - this.btn取消.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.btn取消.Size = new System.Drawing.Size(100, 28); - this.btn取消.Location = new System.Drawing.Point(565, 449); - this.btn取消.Text = "取消"; - this.btn取消.Name = "btn取消"; - - // - // comboBox1 - // - this.comboBox1.Dock = System.Windows.Forms.DockStyle.None; - this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.comboBox1.BackColor = System.Drawing.SystemColors.Window; - this.comboBox1.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.comboBox1.DropDownWidth = 210; - this.comboBox1.DropDownHeight = 106; - this.comboBox1.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.comboBox1.ForeColor = System.Drawing.SystemColors.WindowText; - this.comboBox1.IntegralHeight = true; - this.comboBox1.ItemHeight = 12; - this.comboBox1.MaxDropDownItems = 8; - this.comboBox1.MaximumSize = new System.Drawing.Size(0, 0); - this.comboBox1.MinimumSize = new System.Drawing.Size(0, 0); - this.comboBox1.MaxLength = 0; - this.comboBox1.Sorted = false; - this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.comboBox1.FormattingEnabled = false; - this.comboBox1.Enabled = true; - this.comboBox1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.comboBox1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.comboBox1.TabIndex = 14; - this.comboBox1.TabStop = true; - this.comboBox1.Size = new System.Drawing.Size(210, 20); - this.comboBox1.Location = new System.Drawing.Point(455, 322); - this.comboBox1.Text = "四舍五入"; - this.comboBox1.Name = "comboBox1"; - - // - // label1 - // - this.label1.Dock = System.Windows.Forms.DockStyle.None; - this.label1.AutoSize = false; - this.label1.AutoEllipsis = false; - this.label1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.label1.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.label1.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label1.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.label1.UseCompatibleTextRendering = false; - this.label1.UseMnemonic = true; - this.label1.BackColor = System.Drawing.SystemColors.Control; - this.label1.Enabled = true; - this.label1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.label1.ForeColor = System.Drawing.SystemColors.ControlText; - this.label1.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.label1.MaximumSize = new System.Drawing.Size(0, 0); - this.label1.MinimumSize = new System.Drawing.Size(0, 0); - this.label1.TabIndex = 14; - this.label1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.label1.Size = new System.Drawing.Size(70, 23); - this.label1.Location = new System.Drawing.Point(19, 320); - this.label1.Text = "单台取整:"; - this.label1.Name = "label1"; - - // - // label2 - // - this.label2.Dock = System.Windows.Forms.DockStyle.None; - this.label2.AutoSize = false; - this.label2.AutoEllipsis = false; - this.label2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.label2.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label2.LiveSetting = System.Windows.Forms.Automation.AutomationLiveSetting.Off; - this.label2.TextAlign = System.Drawing.ContentAlignment.TopLeft; - this.label2.UseCompatibleTextRendering = false; - this.label2.UseMnemonic = true; - this.label2.BackColor = System.Drawing.SystemColors.Control; - this.label2.Enabled = true; - this.label2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.label2.ForeColor = System.Drawing.SystemColors.ControlText; - this.label2.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); - this.label2.MaximumSize = new System.Drawing.Size(0, 0); - this.label2.MinimumSize = new System.Drawing.Size(0, 0); - this.label2.TabIndex = 15; - this.label2.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.label2.Size = new System.Drawing.Size(70, 20); - this.label2.Location = new System.Drawing.Point(379, 324); - this.label2.Text = "项目取整:"; - this.label2.Name = "label2"; - - // - // comboBox2 - // - this.comboBox2.Dock = System.Windows.Forms.DockStyle.None; - this.comboBox2.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.comboBox2.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.comboBox2.BackColor = System.Drawing.SystemColors.Window; - this.comboBox2.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.comboBox2.DropDownWidth = 220; - this.comboBox2.DropDownHeight = 106; - this.comboBox2.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.comboBox2.ForeColor = System.Drawing.SystemColors.WindowText; - this.comboBox2.IntegralHeight = true; - this.comboBox2.ItemHeight = 12; - this.comboBox2.MaxDropDownItems = 8; - this.comboBox2.MaximumSize = new System.Drawing.Size(0, 0); - this.comboBox2.MinimumSize = new System.Drawing.Size(0, 0); - this.comboBox2.MaxLength = 0; - this.comboBox2.Sorted = false; - this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.comboBox2.FormattingEnabled = false; - this.comboBox2.Enabled = true; - this.comboBox2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.comboBox2.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.comboBox2.TabIndex = 14; - this.comboBox2.TabStop = true; - this.comboBox2.Size = new System.Drawing.Size(220, 20); - this.comboBox2.Location = new System.Drawing.Point(95, 324); - this.comboBox2.Text = "四舍五入"; - this.comboBox2.Name = "comboBox2"; - - // - // cmb项目总价 - // - this.cmb项目总价.Dock = System.Windows.Forms.DockStyle.None; - this.cmb项目总价.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.None; - this.cmb项目总价.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.None; - this.cmb项目总价.BackColor = System.Drawing.SystemColors.Window; - this.cmb项目总价.DrawMode = System.Windows.Forms.DrawMode.Normal; - this.cmb项目总价.DropDownWidth = 200; - this.cmb项目总价.DropDownHeight = 106; - this.cmb项目总价.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.cmb项目总价.ForeColor = System.Drawing.SystemColors.WindowText; - this.cmb项目总价.IntegralHeight = true; - this.cmb项目总价.ItemHeight = 12; - this.cmb项目总价.MaxDropDownItems = 8; - this.cmb项目总价.MaximumSize = new System.Drawing.Size(0, 0); - this.cmb项目总价.MinimumSize = new System.Drawing.Size(0, 0); - this.cmb项目总价.MaxLength = 0; - this.cmb项目总价.Sorted = false; - this.cmb项目总价.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; - this.cmb项目总价.FormattingEnabled = false; - this.cmb项目总价.Enabled = true; - this.cmb项目总价.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.cmb项目总价.Margin = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.cmb项目总价.TabIndex = 14; - this.cmb项目总价.TabStop = true; - this.cmb项目总价.Size = new System.Drawing.Size(210, 20); - this.cmb项目总价.Location = new System.Drawing.Point(455, 290); - this.cmb项目总价.Text = "保留整数"; - this.cmb项目总价.Name = "cmb项目总价"; - - // 新建项目 - this.Controls.AddRange(new System.Windows.Forms.Control[] { - this.lbl项目编号, - this.txt项目编号, - this.lbl项目日期, - this.txt项目日期, - this.lbl项目名称, - this.txt项目名称, - this.lbl客户名称, - this.txt客户名称, - this.btn选择客户, - this.lbl客户地址, - this.txt客户地址, - this.lbl联系人, - this.txt联系人, - this.lbl联系电话, - this.txt联系电话, - this.lbl成套厂名称, - this.txt成套厂名称, - this.lbl成套厂地址, - this.txt成套厂地址, - this.lbl成套厂联系人, - this.txt成套厂联系人, - this.lbl成套厂联系电话, - this.txt成套厂联系电话, - this.lbl报出方式, - this.cmb报出方式, - this.lbl箱柜模板, - this.cmb箱柜模板, - this.lbl单台价格, - this.cmb单台价格, - this.lbl项目总价, - this.lbl备注, - this.txt备注, - this.btn确定, - this.btn取消, - this.comboBox1, - this.label1, - this.label2, - this.comboBox2, - this.cmb项目总价, - }); - // - // 新建项目 - // - this.Dock = System.Windows.Forms.DockStyle.None; - this.AutoScroll = false; - this.AutoSize = false; - this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; - this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; - this.BackColor = System.Drawing.SystemColors.Control; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.ControlBox = true; - this.HelpButton = false; - this.IsMdiContainer = false; - this.KeyPreview = false; - this.MaximumSize = new System.Drawing.Size(0, 0); - this.MinimumSize = new System.Drawing.Size(0, 0); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Opacity = 1; - this.RightToLeftLayout = false; - this.ShowInTaskbar = true; - this.ShowIcon = true; - this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Auto; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.TopMost = false; - this.WindowState = System.Windows.Forms.FormWindowState.Normal; - this.AutoScrollMargin = new System.Drawing.Size(0, 0); - this.AutoScrollMinSize = new System.Drawing.Size(0, 0); - this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile; - this.Enabled = true; - this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.ForeColor = System.Drawing.SystemColors.ControlText; - this.Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.Size = new System.Drawing.Size(700, 538); - this.Text = "新建项目"; - this.Name = "新建项目"; - this.ResumeLayout(false); - this.PerformLayout(); - } - - #endregion - - private System.Windows.Forms.Label lbl项目编号; - private System.Windows.Forms.TextBox txt项目编号; - private System.Windows.Forms.Label lbl项目日期; - private System.Windows.Forms.TextBox txt项目日期; - private System.Windows.Forms.Label lbl项目名称; - private System.Windows.Forms.TextBox txt项目名称; - private System.Windows.Forms.Label lbl客户名称; - private System.Windows.Forms.TextBox txt客户名称; - private System.Windows.Forms.Button btn选择客户; - private System.Windows.Forms.Label lbl客户地址; - private System.Windows.Forms.TextBox txt客户地址; - private System.Windows.Forms.Label lbl联系人; - private System.Windows.Forms.TextBox txt联系人; - private System.Windows.Forms.Label lbl联系电话; - private System.Windows.Forms.TextBox txt联系电话; - private System.Windows.Forms.Label lbl成套厂名称; - private System.Windows.Forms.TextBox txt成套厂名称; - private System.Windows.Forms.Label lbl成套厂地址; - private System.Windows.Forms.TextBox txt成套厂地址; - private System.Windows.Forms.Label lbl成套厂联系人; - private System.Windows.Forms.TextBox txt成套厂联系人; - private System.Windows.Forms.Label lbl成套厂联系电话; - private System.Windows.Forms.TextBox txt成套厂联系电话; - private System.Windows.Forms.Label lbl报出方式; - private System.Windows.Forms.ComboBox cmb报出方式; - private System.Windows.Forms.Label lbl箱柜模板; - private System.Windows.Forms.ComboBox cmb箱柜模板; - private System.Windows.Forms.Label lbl单台价格; - private System.Windows.Forms.ComboBox cmb单台价格; - private System.Windows.Forms.Label lbl项目总价; - private System.Windows.Forms.Label lbl备注; - private System.Windows.Forms.TextBox txt备注; - private System.Windows.Forms.Button btn确定; - private System.Windows.Forms.Button btn取消; - private System.Windows.Forms.ComboBox comboBox1; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.ComboBox comboBox2; - private System.Windows.Forms.ComboBox cmb项目总价; - } -} diff --git a/cadbt/cadbt/cadcj/注册CAD自动加载.reg b/cadbt/cadbt/cadcj/注册CAD自动加载.reg deleted file mode 100644 index 30c0bcf..0000000 --- a/cadbt/cadbt/cadcj/注册CAD自动加载.reg +++ /dev/null @@ -1,7 +0,0 @@ -Windows Registry Editor Version 5.00 - -[HKEY_LOCAL_MACHINE\Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R22.0\ACAD-1001:804\Apps\CADCJ] -"DESCRIPTION"="³ÉÌױ¨¼۲å¼þ" -"LOADCTRLS"=dword:00000002 -"MANAGED"=dword:00000001 -"MODULE"="C:\\Users\\099978\\Documents\\SharpDevelop Projects\\³ÉÌױ¨¼ÛÈí¼þ\\³ÉÌױ¨¼ÛÈí¼þ\\cadcj\\cadcj.dll" diff --git a/cadbt/cadbt/cadcj/用户库_20260814_233247.csv b/cadbt/cadbt/cadcj/用户库_20260814_233247.csv deleted file mode 100644 index 6b57c97..0000000 --- a/cadbt/cadbt/cadcj/用户库_20260814_233247.csv +++ /dev/null @@ -1,1215 +0,0 @@ -Ԫ¼þÃû³Æ,¹æ¸ñ,µ¥λ,ÊýÁ¿,±í¼Û,²ɹºϵÊý,±¨³öϵÊý,ƷÅÆ,ϵÁÐ,Ԫ¼þÀàÐÍ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 20/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 30/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 40/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 50/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 75/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 100/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 150/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 200/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 300/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 400/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 500/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-30о 600/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 600/5,ֻ,1,15,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 800/5,ֻ,1,15,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 1000/5,ֻ,1,15,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-60о 1500/5,ֻ,1,25,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-100о 2000/5,ֻ,1,40,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-100о 2500/5,ֻ,1,55,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-100о 3000/5,ֻ,1,55,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-100о 4000/5,ֻ,1,55,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-130о 5000/5,ֻ,1,85,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷±í,6L2-A,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ±í,6L2-V 0~450V,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ±í,42L6-V 0~450V,ֻ,1,18,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷±í,99T1-A,ֻ,1,15,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ±í,99T1-V 0~450V,ֻ,1,15,1,1,¹úÓÅ,0,Ԫ¼þ -ÐźŵÆ,AD16-22,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -°´ť,LA38-22,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýť¿ª¹Ø,LA38-22X2,ֻ,1,8,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹת»»¿ª¹Ø,LW5-16 YH3/3,ֻ,1,17,1,1,¹úÓÅ,0,Ԫ¼þ -±ÜÀׯ÷,FYS-0.22,ֻ,1,7,1,1,¹úÓÅ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 6A,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-63 63A,ֻ,1,8,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò 40*4,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò 50*5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò 60*6,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò 80*8,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò 10*100,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò 10*130,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GCSµ¥ÅÅĸÏ߿ò 40*4,ֻ,1,18,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GCSµ¥ÅÅĸÏ߿ò 50*5,ֻ,1,19,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GCSµ¥ÅÅĸÏ߿ò 60*6,ֻ,1,19,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GCSµ¥ÅÅĸÏ߿ò 80*8,ֻ,1,22,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GCSµ¥ÅÅĸÏ߿ò 10*100,ֻ,1,25,1,1,¹úÓÅ,0,Ԫ¼þ -ĸÏ߿ò,GCSµ¥ÅÅĸÏ߿ò 10*130,ֻ,1,25,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýתʽµ¶¿ª¹Ø,HD13BX-200/31 200A,ֻ,1,130,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýתʽµ¶¿ª¹Ø,HD13BX-400/31 400A,ֻ,1,190,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýתʽµ¶¿ª¹Ø,HD13BX-600/31 600A,ֻ,1,280,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýתʽµ¶¿ª¹Ø,HD13BX-1000/31 1000A,ֻ,1,460,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýתʽµ¶¿ª¹Ø,HD13BX-1500/31 1500A,ֻ,1,750,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýתʽµ¶¿ª¹Ø,HD13BX-2000/31 2000A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -Ðýתʽµ¶¿ª¹Ø,HD13BX-3000/31 3000A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3300 16A,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3300 20A,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3300 25A,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3300 32A,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3300 40A,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3300 50A,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3300 63A,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 16A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 20A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 25A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 32A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 40A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 50A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 63A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 80A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 100A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3300 135A,ֻ,1,76,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3300 135A,ֻ,1,119,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3300 160A,ֻ,1,119,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3300 200A,ֻ,1,119,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3300 225A,ֻ,1,119,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3300 250A,ֻ,1,119,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3300 250A,ֻ,1,270,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3300 315A,ֻ,1,270,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3300 400A,ֻ,1,270,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3300 400A,ֻ,1,450,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3300 500A,ֻ,1,450,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3300 630A,ֻ,1,450,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-800L/3300 800A,ֻ,1,630,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-1250L/3300 1250A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-1600L/3300 1600A,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3340 16A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3340 20A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3340 25A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3340 32A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3340 40A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3340 50A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3340 63A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 16A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 20A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 25A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 32A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 40A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 50A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 63A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 80A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 100A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3340 135A,ֻ,1,99,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3340 135A,ֻ,1,142,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3340 160A,ֻ,1,142,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3340 200A,ֻ,1,142,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3340 225A,ֻ,1,142,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3340 250A,ֻ,1,142,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3340 250A,ֻ,1,350,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3340 315A,ֻ,1,350,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3340 400A,ֻ,1,350,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3340 400A,ֻ,1,530,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3340 500A,ֻ,1,530,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3340 630A,ֻ,1,530,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-800L/3340 800A,ֻ,1,630,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-1250L/3340 1250A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-1600L/3340 1600A,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3208 16A,ֻ,1,77,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3208 20A,ֻ,1,77,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3208 25A,ֻ,1,77,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3208 32A,ֻ,1,77,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3208 40A,ֻ,1,77,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3208 50A,ֻ,1,77,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-63L/3208 63A,ֻ,1,77,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 16A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 20A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 25A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 32A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 40A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 50A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 63A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 80A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 100A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-135L/3208 135A,ֻ,1,88,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3208 135A,ֻ,1,131,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3208 160A,ֻ,1,131,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3208 200A,ֻ,1,131,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3208 225A,ֻ,1,131,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-250L/3208 250A,ֻ,1,131,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3208 250A,ֻ,1,294,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3208 315A,ֻ,1,294,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-400L/3208 400A,ֻ,1,294,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3208 400A,ֻ,1,474,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3208 500A,ֻ,1,474,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-630L/3208 630A,ֻ,1,474,1,1,¹úÓÅ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJ19-25 AC220V,ֻ,1,38,1,1,¹úÓÅ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJ19-32 AC220V,ֻ,1,43,1,1,¹úÓÅ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJ19-43 AC220V,ֻ,1,55,1,1,¹úÓÅ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJ19-63 AC220V,ֻ,1,95,1,1,¹úÓÅ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJ19-95 AC220V,ֻ,1,140,1,1,¹úÓÅ,0,Ԫ¼þ -Èȼ̵çÆ÷,JR36-20,ֻ,1,9,1,1,¹úÓÅ,0,Ԫ¼þ -Èȼ̵çÆ÷,JR36-63,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -Èȼ̵çÆ÷,JR36-160,ֻ,1,38,1,1,¹úÓÅ,0,Ԫ¼þ -¿ØÖÆÆ÷,JKL5C-4,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -¿ØÖÆÆ÷,JKL5C-6,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -¿ØÖÆÆ÷,JKL5C-8,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -¿ØÖÆÆ÷,JKL5C-10,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -¿ØÖÆÆ÷,JKL5C-13,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -QSAµ¶Èۿª¹Ø,QSA-63/3P,ֻ,1,185,1,1,¹úÓÅ,0,Ԫ¼þ -QSAµ¶Èۿª¹Ø,QSA-135/3P,ֻ,1,190,1,1,¹úÓÅ,0,Ԫ¼þ -QSAµ¶Èۿª¹Ø,QSA-160/3P,ֻ,1,310,1,1,¹úÓÅ,0,Ԫ¼þ -QSAµ¶Èۿª¹Ø,QSA-250/3P,ֻ,1,330,1,1,¹úÓÅ,0,Ԫ¼þ -QSAµ¶Èۿª¹Ø,QSA-400/3P,ֻ,1,365,1,1,¹úÓÅ,0,Ԫ¼þ -QSAµ¶Èۿª¹Ø,QSA-630/3P,ֻ,1,860,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ¦µ翹Æ÷,CKSG-0.7/0.45-7%(ÊʺϵçÈÝ10£©,ֻ,1,350,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ¦µ翹Æ÷,CKSG-1.05/0.45-7%(ÊʺϵçÈÝ15£©,ֻ,1,400,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ¦µ翹Æ÷,CKSG-1.4/0.45-7%(ÊʺϵçÈÝ20£©,ֻ,1,470,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ¦µ翹Æ÷,CKSG-1.75/0.45-7%(ÊʺϵçÈÝ25£©,ֻ,1,560,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ¦µ翹Æ÷,CKSG-2.1/0.45-7%(ÊʺϵçÈÝ30£©,ֻ,1,590,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ¦µ翹Æ÷,CKSG-2.8/0.45-7%(ÊʺϵçÈÝ40£©,ֻ,1,680,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ¦µ翹Æ÷,CKSG-3.5/0.45-7%(ÊʺϵçÈÝ50£©,ֻ,1,770,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-50VA,ֻ,1,37,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-100VA,ֻ,1,55,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-150VA,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-200VA,ֻ,1,75,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-250VA,ֻ,1,85,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-300VA,ֻ,1,95,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-400VA,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-500VA,ֻ,1,140,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-750VA,ֻ,1,180,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-1000VA,ֻ,1,235,1,1,¹úÓÅ,0,Ԫ¼þ -BK¿ØÖƱäѹÆ÷,BK-1500VA,ֻ,1,320,1,1,¹úÓÅ,0,Ԫ¼þ -¶๦ÄÜÊýÏԱí,72ÐÍ 67*67,ֻ,1,130,1,1,¹úÓÅ,0,Ԫ¼þ -¶๦ÄÜÊýÏԱí,80ÐÍ 76*76,ֻ,1,130,1,1,¹úÓÅ,0,Ԫ¼þ -¶๦ÄÜÊýÏԱí,96ÐÍ 91*91,ֻ,1,130,1,1,¹úÓÅ,0,Ԫ¼þ -¶๦ÄÜÊýÏԱí,130ÐÍ 111*111,ֻ,1,130,1,1,¹úÓÅ,0,Ԫ¼þ -µ¥ÏàÊýÏԵçÁ÷±í,72ÐÍ 67*67,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -µ¥ÏàÊýÏԵçÁ÷±í,80ÐÍ 76*76,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -µ¥ÏàÊýÏԵçÁ÷±í,96ÐÍ 91*91,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -µ¥ÏàÊýÏԵçÁ÷±í,130ÐÍ 111*111,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -ÈýÏàÊýÏԵçÁ÷±í,72ÐÍ 67*67,ֻ,1,68,1,1,¹úÓÅ,0,Ԫ¼þ -ÈýÏàÊýÏԵçÁ÷±í,80ÐÍ 76*76,ֻ,1,68,1,1,¹úÓÅ,0,Ԫ¼þ -ÈýÏàÊýÏԵçÁ÷±í,96ÐÍ 91*91,ֻ,1,68,1,1,¹úÓÅ,0,Ԫ¼þ -ÈýÏàÊýÏԵçÁ÷±í,130ÐÍ 111*111,ֻ,1,68,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 16A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 20A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 25A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 32A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 40A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 50A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 63A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 80A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-100/4P 100A PC¼¶,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-160/4P 135A PC¼¶,ֻ,1,400,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-160/4P 160A PC¼¶,ֻ,1,400,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-250/4P 200A PC¼¶,ֻ,1,450,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-250/4P 250A PC¼¶,ֻ,1,450,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-400/4P 315A PC¼¶,ֻ,1,850,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-400/4P 400A PC¼¶,ֻ,1,850,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-630/4P 500A PC¼¶,ֻ,1,950,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-630/4P 630A PC¼¶,ֻ,1,950,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-1000/4P 800A PC¼¶,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-1000/4P 1000A PC¼¶,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-1250/4P 1250A PC¼¶,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-1600/4P 1600A PC¼¶,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-2000/4P 2000A PC¼¶,ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-2500/4P 2500A PC¼¶,ֻ,1,8,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRQ1-3200/4P 3200A PC¼¶,ֻ,1,9,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-2000/3P 630A ³éÌëʽ,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-2000/3P 1000A ³éÌëʽ,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-2000/3P 1350A ³éÌëʽ,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-2000/3P 1600A ³éÌëʽ,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-2000/3P 2000A ³éÌëʽ,ֻ,1,5,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-3200/3P 2000A ³éÌëʽ,ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-3200/3P 2500A ³éÌëʽ,ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-3200/3P 2900A ³éÌëʽ,ֻ,1,7,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-3200/3P 3200A ³éÌëʽ,ֻ,1,7,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-4000/3P 3600A ³éÌëʽ,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-4000/3P 4000A ³éÌëʽ,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-6300/3P 4000A ³éÌëʽ,ֻ,1,19,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-6300/3P 5000A ³éÌëʽ,ֻ,1,21,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HYW1-6300/3P 6300A ³éÌëʽ,ֻ,1,24,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-8-3,ֻ,1,50,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-10-3,ֻ,1,60,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-13-3,ֻ,1,70,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-15-3,ֻ,1,80,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-16-3,ֻ,1,90,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-18-3,ֻ,1,100,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-20-3,ֻ,1,110,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-25-3,ֻ,1,140,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-30-3,ֻ,1,166,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-35-3,ֻ,1,190,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈÝÆ÷,BSMJ-0.45-40-3,ֻ,1,240,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܵçÈÝ,KY81JF/250V-5,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܵçÈÝ,KY81JF/250V-10,ֻ,1,600,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܵçÈÝ,KY81JF/250V-15,ֻ,1,700,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܵçÈÝ,KY81JF/250V-20,ֻ,1,750,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܵçÈÝ,KY81JF/250V-30,ֻ,1,800,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܵçÈݿØÖÆÆ÷,KY83JS,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܵçÈݿØÖÆÆ÷,YL84JF,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -HD13BXÐýתʽµ¶¿ª¹Ø,HD13BX-200/31/200A,ֻ,1,130,1,1,¹úÓÅ,0,Ԫ¼þ -HD13BXÐýתʽµ¶¿ª¹Ø,HD13BX-400/31/400A,ֻ,1,190,1,1,¹úÓÅ,0,Ԫ¼þ -HD13BXÐýתʽµ¶¿ª¹Ø,HD13BX-600/31/600A,ֻ,1,280,1,1,¹úÓÅ,0,Ԫ¼þ -HD13BXÐýתʽµ¶¿ª¹Ø,HD13BX-1000/31/1000A,ֻ,1,460,1,1,¹úÓÅ,0,Ԫ¼þ -HD13BXÐýתʽµ¶¿ª¹Ø,HD13BX-1500/31/1500A,ֻ,1,750,1,1,¹úÓÅ,0,Ԫ¼þ -HD13BXÐýתʽµ¶¿ª¹Ø,HD13BX-2000/31/2000A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -HD13BXÐýתʽµ¶¿ª¹Ø,HD13BX-3000/31/3000A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -GGDµ¥ÅÅĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò/4*40,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -GGDµ¥ÅÅĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò/5*50,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -GGDµ¥ÅÅĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò/6*60,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -GGDµ¥ÅÅĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò/8*80,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -GGDµ¥ÅÅĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò/10*100,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -GGDµ¥ÅÅĸÏ߿ò,GGDµ¥ÅÅĸÏ߿ò/10*130,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -GGD˫ÅÅĸÏ߿ò,GGD˫ÅÅĸÏ߿ò/5*50,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -GGD˫ÅÅĸÏ߿ò,GGD˫ÅÅĸÏ߿ò/6*60,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -GGD˫ÅÅĸÏ߿ò,GGD˫ÅÅĸÏ߿ò/8*80,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -GGD˫ÅÅĸÏ߿ò,GGD˫ÅÅĸÏ߿ò/10*100,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -GGD˫ÅÅĸÏ߿ò,GGD˫ÅÅĸÏ߿ò/10*130,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -GCSĸÏ߿ò,GCSĸÏ߿ò/4*40,ֻ,1,18,1,1,¹úÓÅ,0,Ԫ¼þ -GCSĸÏ߿ò,GCSĸÏ߿ò/5*50,ֻ,1,19,1,1,¹úÓÅ,0,Ԫ¼þ -GCSĸÏ߿ò,GCSĸÏ߿ò/6*60,ֻ,1,19,1,1,¹úÓÅ,0,Ԫ¼þ -GCSĸÏ߿ò,GCSĸÏ߿ò/8*80,ֻ,1,22,1,1,¹úÓÅ,0,Ԫ¼þ -GCSĸÏ߿ò,GCSĸÏ߿ò/10*100,ֻ,1,25,1,1,¹úÓÅ,0,Ԫ¼þ -GCSĸÏ߿ò,GCSĸÏ߿ò/10*130,ֻ,1,25,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-630A/µ綯¿ìËÙ(ˮƽ),ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-800A/µ綯¿ìËÙ(ˮƽ),ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1000A/µ綯¿ìËÙ(ˮƽ),ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1350A/µ綯¿ìËÙ(ˮƽ),ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1600A/µ綯¿ìËÙ(ˮƽ),ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2000A/µ綯¿ìËÙ(ˮƽ),ֻ,1,5,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2500A/µ綯¿ìËÙ(ˮƽ),ֻ,1,5,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2500A/µ綯¿ìËÙ(ˮƽ),ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-3200A/µ綯¿ìËÙ(ˮƽ),ֻ,1,8,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-3200A/µ綯¿ìËÙ(ˮƽ),ֻ,1,10,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-630A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-800A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1000A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1350A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1600A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1600A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2000A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,5,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2500A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2500A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,8,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-3200A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,9,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-3200A/µ綯¿ìË٣¨´¹ֱ£©,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-630A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-800A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1000A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1350A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1600A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-1600A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,5,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2000A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,7,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2500A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,8,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-2500A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,10,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-3200A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -DW17ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW17-3200A/µ綯¿ìË٣¨²åÈ룩,ֻ,1,14,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-200A/µç´ŵ綯,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-400A/µç´ŵ綯,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-630A/µç´ŵ綯,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-1000A/µç´ŵ綯,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-1600A/µç´ŵ綯,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-2500A/µç´ŵ綯,ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-4000A/µç´ŵ綯,ֻ,1,9,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-200A/Èȵç´ŵ綯,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-400A/Èȵç´ŵ綯,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-630A/Èȵç´ŵ綯,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-1000A/Èȵç´ŵ綯,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-1600A/Èȵç´ŵ綯,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-2500A/Èȵç´ŵ綯,ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -DW15ϵÁÐÍòÄÜʽ¶Ï·Æ÷,DW15-4000A/Èȵç´ŵ綯,ֻ,1,9,1,1,¹úÓÅ,0,Ԫ¼þ -CJ19µçÈÝÇл»Æ÷,25/220V,ֻ,1,38,1,1,¹úÓÅ,0,Ԫ¼þ -CJ19µçÈÝÇл»Æ÷,32/220V,ֻ,1,43,1,1,¹úÓÅ,0,Ԫ¼þ -CJ19µçÈÝÇл»Æ÷,43/220V,ֻ,1,55,1,1,¹úÓÅ,0,Ԫ¼þ -CJ19µçÈÝÇл»Æ÷,63/220V,ֻ,1,95,1,1,¹úÓÅ,0,Ԫ¼þ -CJ19µçÈÝÇл»Æ÷,95/220V,ֻ,1,140,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈݲ¹³¥Æ÷£¨½»Á÷Èȼ̣©,JKL5C-4,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈݲ¹³¥Æ÷£¨½»Á÷Èȼ̣©,JKL5C-6,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈݲ¹³¥Æ÷£¨½»Á÷Èȼ̣©,JKL5C-8,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈݲ¹³¥Æ÷£¨½»Á÷Èȼ̣©,JKL5C-10,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -µçÈݲ¹³¥Æ÷£¨½»Á÷Èȼ̣©,JKL5C-13,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -ָʾµÆ,Ad16-¦µ22/»Æ/220V,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -ָʾµÆ,Ad16-¦µ23/ÂÌ220V,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -ָʾµÆ,Ad16-¦µ24/ºì220V,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -ָʾµÆ,Ad16-¦µ22/»Æ380V,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -ָʾµÆ,Ad16-¦µ23/ÂÌ380V,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -ָʾµÆ,Ad16-¦µ24/ºì380V,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -°´ť,LA39-11,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD/4P/10KA,ֻ,1,42,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD/4P/20KA,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD/4P/40KA,ֻ,1,60,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD/4P/60KA,ֻ,1,70,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD/4P/80KA,ֻ,1,100,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD/4P/100KA,ֻ,1,170,1,1,¹úÓÅ,0,Ԫ¼þ -µçÆø»ðÔֱ¨¾¯Æ÷,,ֻ,1,225,1,1,¹úÓÅ,0,Ԫ¼þ -ʣÓàµçÁ÷»¥¸ÐÆ÷,,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -¸´ºϿª¹Ø,,ֻ,1,170,1,1,¹úÓÅ,0,Ԫ¼þ -ŷÈð±äƵÆ÷,E2000-0900T3,ֻ,1,9,1,1,¹úÓÅ,0,Ԫ¼þ -ŷÈð±äƵÆ÷,E2000-0750T3,ֻ,1,7,1,1,¹úÓÅ,0,Ԫ¼þ -ŷÈð±äƵÆ÷,E2000-0550T3,ֻ,1,6,1,1,¹úÓÅ,0,Ԫ¼þ -Õæ¿նÏ·Æ÷,VS1-630/25KA¹̶¨ʽ,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -Õæ¿նÏ·Æ÷,VS1-1350/31.55KA¹̶¨ʽ,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -Õæ¿նÏ·Æ÷,VS1-630/25KAÊֳµʽ,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -Õæ¿նÏ·Æ÷,VS1-1350/31.5KAÊֳµʽ,ֻ,1,5,1,1,¹úÓÅ,0,Ԫ¼þ -ÓÀ³ÇÕæ¿նÏ·Æ÷,ZW32-13/630-20,ֻ,1,8,1,1,¹úÓÅ,0,Ԫ¼þ -µ¯²ÙÕæ¿նÏ·Æ÷,ZW32-40.5/630-20(35KV),ֻ,1,27,1,1,¹úÓÅ,0,Ԫ¼þ -Õæ¿նÏ·Æ÷,ZW7-40.5/1350-31.5,ֻ,1,38,1,1,¹úÓÅ,0,Ԫ¼þ -¸ººɿª¹Ø,FZN25-13,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -¸ººɿª¹Ø,FN13-13,ֻ,1,3,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 10~500/5 0.5,ֻ,1,480,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 10~500/5 0.2S,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 5/5 600/50.5,ֻ,1,470,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 5/5 600/50.2S,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨Ñò½ǣ©,JDZ-10/0.1 0.2S,ֻ,1,650,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨Ñò½ǣ©,JDZ-10/0.22 500VA,ֻ,1,650,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨Ñò½ǣ©,JDZ-10/0.22 800VA,ֻ,1,850,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨Ñò½ǣ©,JDZ-10/0.1 0.22 0.2,ֻ,1,750,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨Ñò½ǣ©,JDZ-10/¡Ì3 0.5,ֻ,1,650,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨Ñò½ǣ©,JDZ-10/¡Ì3 0.2,ֻ,1,750,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨ȫ·â),JDZ10-10/0.10.2S,ֻ,1,750,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨ȫ·â),JDZ10-10/¡Ì3 0.5,ֻ,1,650,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,GN30-13 630,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,GN19-13 1350A´ø´«¸ÐÆ÷,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,GN19-13 1350A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,GN19-13 630A´ø´«¸ÐÆ÷,ֻ,1,750,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,GN19-13 630A,ֻ,1,650,1,1,¹úÓÅ,0,Ԫ¼þ -½ӵص¶,JN15-13,ֻ,1,649,1,1,¹úÓÅ,0,Ԫ¼þ -½ӵص¶,JN22-13,ֻ,1,449,1,1,¹úÓÅ,0,Ԫ¼þ -¾øԵ×Ó,65*140,ֻ,1,30,1,1,¹úÓÅ,0,Ԫ¼þ -Ì׹Ü,60*6/80*8,ֻ,1,30,1,1,¹úÓÅ,0,Ԫ¼þ -´«¸ÐÆ÷,95*140,ֻ,1,30,1,1,¹úÓÅ,0,Ԫ¼þ -¾²´¥ͷ,630A,ֻ,1,35,1,1,¹úÓÅ,0,Ԫ¼þ -¾²´¥ͷ,1350A,ֻ,1,60,1,1,¹úÓÅ,0,Ԫ¼þ -»úе±ÕËø²Ù×÷Ãæ°å,ÉϸôÀë,ֻ,1,190,1,1,¹úÓÅ,0,Ԫ¼þ -»úе±ÕËø²Ù×÷Ãæ°å,ϸôÀë,ֻ,1,190,1,1,¹úÓÅ,0,Ԫ¼þ -»úе±ÕËø²Ù×÷Ãæ°å,ÉϸôÀëϽӵØ,ֻ,1,240,1,1,¹úÓÅ,0,Ԫ¼þ -µç´ÅËø,DSN-BM/Y/Z,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹ´øµçÏÔʾ,DXN-10/T,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹ´øµçÏÔʾ,DXN-10/Q,ֻ,1,25,1,1,¹úÓÅ,0,Ԫ¼þ -¹ñÄÚÕÕÃ÷,CM1,ֻ,1,15,1,1,¹úÓÅ,0,Ԫ¼þ -ÖÇÄܲٿØ,ÖÇÄܲٿØ,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -¿ª¹Ø״̬ÏÔʾÒÇ,¿ª¹Ø״̬ÏÔʾÒÇ,ֻ,1,300,1,1,¹úÓÅ,0,Ԫ¼þ -һ´ÎÏûг,һ´ÎÏûг,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -±ÜÀׯ÷,S9/LL-ZMSAH,ֻ,1,150,1,1,¹úÓÅ,0,Ԫ¼þ -±ÜÀׯ÷,St/LL-SMSAH,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹÈ۶ÏÆ÷,XRNP-10/0.5£¨´ø¼Ð×ӣ©,ֻ,1,35,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹÈ۶ÏÆ÷,XRN2-10KV£¨´ø¼Ð×ӣ©,ֻ,1,35,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹÈ۶ÏÆ÷,XRNT-10-40A,ֻ,1,85,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹÈ۶ÏÆ÷,XRNT-50-135A,ֻ,1,135,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹÈ۶ÏÆ÷,XRNT-150A-200A,ֻ,1,160,1,1,¹úÓÅ,0,Ԫ¼þ -10KVÕëʽ¸´ºϾøԵ×Ó,FPQ1-10/4T20,ֻ,1,26,1,1,¹úÓÅ,0,Ԫ¼þ -6KV±ÜÀׯ÷,HY5WS-17/30,ֻ,1,160,1,1,¹úÓÅ,0,Ԫ¼þ -10KV±ÜÀׯ÷,HY5WZ-17/45,ֻ,1,260,1,1,¹úÓÅ,0,Ԫ¼þ -10KV»§ÍâµøÂäʽ±£ÏÕ,RW11-11F,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -10KV°ôʽ¸´ºϾøԵ×Ó,,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -35KV¸´ºϺᵣ,FS3-35/5,ֻ,1,150,1,1,¹úÓÅ,0,Ԫ¼þ -35KVÐüʽ°ôÐθ´ºϾøԵ×Ó,FXBW6-35/71,ֻ,1,80,1,1,¹úÓÅ,0,Ԫ¼þ -35KV֧Öùʽ±ÜÀׯ÷,HY5W-51/134,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -35KV»§ÍâµøÂäʽ±£ÏÕ,RWJ-35,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -»§Íâֱ¿նÏ·Æ÷,ZW32-13G/630,ֻ,1,5,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹ¼ÆÁ¿Ïä,JLS-10KW,ֻ,1,2,1,1,¹úÓÅ,0,Ԫ¼þ -¸ßѹ¸ôÀ뿪¹Ø,HGW9-600,ֻ,1,550,1,1,¹úÓÅ,0,Ԫ¼þ -µøÂ䱣ÏÕ,HRW7-100A,ֻ,1,300,1,1,¹úÓÅ,0,Ԫ¼þ -µøÂ䱣ÏÕ,HRW7-200A,ֻ,1,350,1,1,¹úÓÅ,0,Ԫ¼þ -µÍѹ¸ººɿª¹Ø,HJW2-400A,ֻ,1,350,1,1,¹úÓÅ,0,Ԫ¼þ -µÍѹ¸ººɿª¹Ø,HJW2-600A,ֻ,1,400,1,1,¹úÓÅ,0,Ԫ¼þ -10KV»§Íâ¾øԵ£¨Èýо£©,WLsY-10/3.1,ֻ,1,260,1,1,¹úÓÅ,0,Ԫ¼þ -11KV»§Íâ¾øԵ£¨Èýо£©,WLSY-10/3.2,ֻ,1,280,1,1,¹úÓÅ,0,Ԫ¼þ -ÖмäÁ¬½Ó,JLSY-10/3.1,ֻ,1,680,1,1,¹úÓÅ,0,Ԫ¼þ -ÖмäÁ¬½Ó,JLSY-10/3.2,ֻ,1,800,1,1,¹úÓÅ,0,Ԫ¼þ -ÖмäÁ¬½Ó,JLsY-10/3.3,ֻ,1,900,1,1,¹úÓÅ,0,Ԫ¼þ -ÖмäÁ¬½Ó,JLsY-10/3.4,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -΢»ú±£»¤,HY-6000,ֻ,1,600,1,1,¹úÓÅ,0,Ԫ¼þ -µçѹ»¥¸ÐÆ÷£¨Ñò½ǣ©,JDZJ-10 10/3/0.1/¡Ì3/0.1/3KV,ֻ,1,750,0,0,¹úÓÅ,0,Ԫ¼þ -¿ØÖÆÓ뱣»¤¿ª¹Ø,,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -Î޹¦²¹³¥¿ØÖÆÆ÷,,ֻ,1,140,1,1,¹úÓÅ,0,Ԫ¼þ -˫µçԴ,SRWTQ2(CB)/4P/400A,ֻ,1,1,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD-10KA/4P,ֻ,1,42,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD-20KA/4P,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD-40KA/4P,ֻ,1,85,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD-60KA/4P,ֻ,1,70,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD-80KA/4P,ֻ,1,100,1,1,¹úÓÅ,0,Ԫ¼þ -ÀËӿ±£»¤Æ÷,SRPRD-100KA/4P,ֻ,1,150,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 100/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 150/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 200/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 300/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 400/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-40о 500/5,ֻ,1,13,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-50о 400/5,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-50о 500/5,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-50о 600/5,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-50о 800/5,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-50о 1000/5,ֻ,1,16,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-60о 400/5,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-60о 500/5,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-60о 600/5,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-60о 800/5,ֻ,1,20,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-60о 1000/5,ֻ,1,25,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-80о 800/5,ֻ,1,35,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-80о 1000/5,ֻ,1,35,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-80о 1500/5,ֻ,1,35,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-80о 2000/5,ֻ,1,35,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-100о 1000/5,ֻ,1,40,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-100о 1500/5,ֻ,1,40,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-130о 1000/5,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-130о 1500/5,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-130о 2000/5,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-130о 2500/5,ֻ,1,65,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-130о 3000/5,ֻ,1,75,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,BH-0.66-130о 4000/5,ֻ,1,75,1,1,¹úÓÅ,0,Ԫ¼þ -µçÁ÷±í,42L6-A,ֻ,1,18,1,1,¹úÓÅ,0,Ԫ¼þ -°´ť¿ª¹Ø,LA38-22,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -µ¥ÏàµçÁ÷±í,LEDÏÔʾ½ø¶È0.5%,ֻ,1,45,1,1,¹úÓÅ,0,Ԫ¼þ -ÈýÏàµçÁ÷±í,LEDÏÔʾ½ø¶È0.5%,ֻ,1,80,1,1,¹úÓÅ,0,Ԫ¼þ -Õæ¿նÏ·Æ÷,VS1-1350/25KA¹̶¨ʽ,ֻ,1,4,1,1,¹úÓÅ,0,Ԫ¼þ -Ïû·ÀµçԴ¼à¿Øģ¿é,,ֻ,1,200,1,1,¹úÓÅ,0,Ԫ¼þ -Ïû·ÀµçԴ¼à¿ػ¥¸ÐÆ÷,,ֻ,1,40,1,1,¹úÓÅ,0,Ԫ¼þ -ÁãÐòµçÁ÷»¥¸ÐÆ÷,,ֻ,1,500,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,HYM1-800L/3340 800A,ֻ,1,530,1,1,¹úÓÅ,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 10A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 16A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 20A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 25A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 32A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 40A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 50A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-63S/3300 63A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 16A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 20A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 25A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 32A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 40A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 50A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 63A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 80A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 100A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-125S/3300 125A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 100A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 125A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 140A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 160A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 180A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 200A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 225A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-250S/3300 250A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-400S/3300 225A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-400S/3300 250A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-400S/3300 315A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-400S/3300 350A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-400S/3300 400A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-630S/3300 400A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-630S/3300 500A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-630S/3300 630A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-800S/3300 630A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-800S/3300 700A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-800S/3300 800A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-1250S/3300 800A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-1250S/3300 1000A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NM1-1250S/3300 1250A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX100 TMD 40A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX100 TMD 50A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX100 TMD 63A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX100 TMD 80A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX100 TMD 100A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX160 TMD 100A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX160 TMD 125A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX160 TMD 160A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX250 TMD 160A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX250 TMD 200A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX250 TMD 220A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX250 TMD 250A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX400 MIC5 315A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX400 MIC5 400A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX630 MIC5 500A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,NSX630 MIC5 630A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 10A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 16A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 20A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 25A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 32A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 40A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 50A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-63/3300 63A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 16A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 20A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 25A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 32A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 40A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 50A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 63A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 80A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-100/3300 100A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-125/3300 40A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-125/3300 50A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-125/3300 63A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-125/3300 80A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-125/3300 100A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-125/3300 125A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-160/3300 100A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-160/3300 125A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-160/3300 140A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-160/3300 160A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-250/3300 140A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-250/3300 160A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-250/3300 180A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-250/3300 200A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-250/3300 225A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-250/3300 250A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-400/3300 225A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-400/3300 250A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-400/3300 315A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-400/3300 350A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-400/3300 400A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-630/3300 400A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-630/3300 500A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-630/3300 630A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-800/3300 630A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-800/3300 700A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-800/3300 800A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-1250/3300 800A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-1250/3300 1000A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CDM3-1250/3300 1250A,ֻ,1,0,1,1,µÂÁ¦Î÷,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 6A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 10A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 16A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 20A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 25A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 32A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 40A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 50A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-63/3300 63A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 10A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 16A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 20A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 25A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 32A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 40A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 50A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 63A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 80A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-100/3300 100A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-160/3300 100A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-160/3300 125A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-160/3300 140A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-160/3300 160A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-225/3300 100A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-225/3300 125A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-225/3300 140A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-225/3300 160A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-225/3300 180A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-225/3300 200A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-225/3300 225A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-250/3300 180A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-250/3300 200A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-250/3300 225A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-250/3300 250A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-400/3300 225A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-400/3300 250A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-400/3300 315A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-400/3300 350A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-400/3300 400A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-630/3300 400A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-630/3300 500A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-630/3300 630A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-800/3300 630A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-800/3300 700A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -ËܿǶÏ·Æ÷,CM1-800/3300 800A,ֻ,1,0,1,1,³£Êì,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-0910 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-0901 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1210 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1201 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1810 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1801 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-2510 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-2501 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-3210 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-3201 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-4011 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-5011 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-6511 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-8011 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-9511 220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-0910 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-0901 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1210 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1201 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1810 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-1801 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-2510 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-2501 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-3210 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-3201 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-4011 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-5011 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-6511 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-8011 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,CJX2-9511 380V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D09 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D12 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D18 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D25 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D32 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D40 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D50 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D65 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D80 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D95 220V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D09 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D12 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D18 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D25 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D32 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D40 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D50 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D65 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D80 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -½»Á÷½Ӵ¥Æ÷,LC1-D95 380V,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 0.4-0.63A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 0.63-1A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 1-1.6A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 1.6-2.5A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 2.5-4A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 4-6A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 5.5-8A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 7-10A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 9-13A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 12-18A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-25 17-25A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-38 23-32A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-38 30-38A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 23-32A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 30-40A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 37-50A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 48-65A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 55-70A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 63-80A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 80-93A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-100 80-100A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-200 80-160A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-200 100-200A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-630 125-250A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-630 200-400A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NXR-630 315-630A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 0.1-0.16A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 0.16-0.25A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 0.25-0.4A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 0.4-0.63A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 0.63-1A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 1-1.6A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 1.6-2.5A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 2.5-4A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 4-6A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 5-8A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 7-10A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 9-13A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 12-18A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-25 17-23A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-63 23-32A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-63 30-40A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-63 40-52A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-63 48-65A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,NR2-63 55-63A,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 0.4-0.63A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 0.63-1A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 1-1.6A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 1.6-2.5A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 2.5-4A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 4-6A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 5.5-8A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 7-10A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-09 9-13A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-12 10-13A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-18 12-18A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-25 17-25A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-32 23-32A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-40 30-40A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-50 37-50A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-60 48-65A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -ÈȹýÔؼ̵çÆ÷,LRI-D97 60-100A,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-2A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-4A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-6A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-10A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-16A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-20A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-25A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-32A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-40A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-50A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-63A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-80A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00C-100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-16A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-20A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-25A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-32A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-40A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-50A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-63A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-80A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT00-160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-16A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-20A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-25A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-32A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-35A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-40A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-50A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-63A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-80A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT0-160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT1-80A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT1-100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT1-125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT1-160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT1-200A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT1-224A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT1-250A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-200A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-224A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-250A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-315A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-355A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT2-400A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT3-315A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT3-355A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT3-400A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT3-500A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,NT3-630A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 2A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 4A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 6A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 10A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 16A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 20A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 25A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 32A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 40A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 50A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 63A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 80A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-000 100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 16A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 20A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 25A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 32A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 40A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 50A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 63A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 80A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-00 160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-1 80A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-1 100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-1 125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-1 160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-1 200A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-1 224A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-1 250A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 200A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 224A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 250A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 315A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 355A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT16-2 400A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 0.5A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 1A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 2A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 4A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 6A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 8A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 10A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 16A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 20A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 25A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -È۶ÏÆ÷,RT18-32 32A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 30/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 40/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 50/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 75/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 100/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 150/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 200/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 300/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 400/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 500/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 600/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 800/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 1000/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 1500/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZ-0.5 2000/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 30/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 40/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 50/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 75/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 100/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 150/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 200/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 300/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 400/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 500/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 600/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 800/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LMZJ-0.5 1000/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 50/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 75/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 100/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 150/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 200/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 300/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,LZZBJ9-10 400/5,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-125/3P 63A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-250/3P 100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-250/3P 125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-250/3P 160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-250/3P 200A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-250/3P 250A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-400/3P 315A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-400/3P 400A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,NM2-630/3P 630A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,TBBQ2-63/3P 63A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,TBBQ2-100/3P 100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,TBBQ2-125/3P 125A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,TBBQ2-160/3P 160A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,TBBQ2-250/3P 250A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,TBBQ2-400/3P 400A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,WATS-100/3P 100A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,WATS-250/3P 250A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,WATS-400/3P 400A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,WATS-630/3P 630A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -˫µçԴ,WATS-800/3P 800A,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C6,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C10,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C16,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C20,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C25,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C32,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C40,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C50,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 1P C63,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 2P C16,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 2P C20,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 2P C25,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 2P C32,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 2P C40,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 3P C16,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 3P C20,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 3P C25,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 3P C32,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 3P C40,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 3P C50,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 3P C63,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 4P C16,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 4P C25,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 4P C32,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 4P C40,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,DZ47-60 4P C63,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 1P C16,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 1P C20,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 1P C25,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 1P C32,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 1P C40,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 1P C50,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 1P C63,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 2P C16,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 2P C32,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 3P C16,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 3P C32,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 4P C16,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,NB1-63 4P C32,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -СÐͶÏ·Æ÷,DPN C16,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,DPN C20,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,DPN C25,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,DPN C32,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 1P C16,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 1P C20,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 1P C25,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 1P C32,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 2P C16,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 2P C32,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 3P C16,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -СÐͶÏ·Æ÷,iC65N 3P C32,ֻ,1,0,1,1,ʩÄ͵Â,0,Ԫ¼þ -µçӿ±£»¤Æ÷,SPD T2 20kA 4P,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçӿ±£»¤Æ÷,SPD T2 40kA 4P,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -µçӿ±£»¤Æ÷,NUP65 4P,ֻ,1,0,1,1,Õý̩,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-50VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-100VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-150VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-250VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-300VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-400VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-500VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-1000VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-1500VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-2000VA 220/36V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-2500VA 380/220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-3000VA 380/220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¿ØÖƱäѹÆ÷,BK-5000VA 380/220V,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -ָʾµÆ,AD16-22 220Vºìɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -ָʾµÆ,AD16-22 220VÂÌɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -ָʾµÆ,AD16-22 220V»Æɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -ָʾµÆ,AD16-22 380Vºìɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -ָʾµÆ,AD16-22 380VÂÌɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -°´ť,LA38-11ºìɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -°´ť,LA38-11ÂÌɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -°´ť,LA38-11»Æɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -°´ť,LA38-11À¶ɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -°´ť,LA38-11°×ɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -°´ť,LA39-11ºìɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -°´ť,LA39-11ÂÌɫ,ֻ,1,0,1,1,ͨÓÃ,0,Ԫ¼þ -¸Éʽ±äѹÆ÷,SCB13-1250kva-10/0.4,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-250/4P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µ籣»¤¶Ï·Æ÷,NM1LE-250/4300 250A,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-100/4P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,DZ15LE- 100/4P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µ籣»¤¶Ï·Æ÷,DZ47LE-40/4P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-40/4P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,DZ15LE- 32/4P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,DZ47LE-10/4P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,DZ47LE-10/2P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,DZ47LE-16/2P,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-16/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-16/4P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-32/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-32/4P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-63/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-63/4P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-125/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-125/4P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-160/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-160/4P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-250/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-400/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-400/4P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-630/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL-630/4P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HR3-100/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HR3-200/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HR3-400/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HR3-630/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HS11-100/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HS11-200/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HS11-400/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HS11-630/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HD11-100/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HD11-200/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HD11-400/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HD11-600/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HD11-1000/3P,ֻ,1,0,1,1,¹úÓÅ,0,Ԫ¼þ -©µç¶Ï·Æ÷,iC65N/2P+VigiC16+30mA,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,iC65N/4P+VigiC20+30mA,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,iC65N/2P+VigiC20+30mA,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HGL,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HR3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HR5,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HR6,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HS11,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HS13,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HD11,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HD13,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HD14,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HD13BX,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷ʽ¸ôÀëÆ÷,HG1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷ʽ¸ôÀëÆ÷,HG13,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,INT,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NM1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NM2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NM3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NM6,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NM8,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µ籣»¤¶Ï·Æ÷,NM1L,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÖÇÄÜÐÍËܿǶÏ·Æ÷,NM1E,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CM1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CM2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CM3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CM5,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CDM3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CDM6,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,DZ15,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,DZ20,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,DZ47,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µç¶Ï·Æ÷,DZ47L,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µç¶Ï·Æ÷,DZ15L,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µç¶Ï·Æ÷,DZL18,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,NB1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,NB2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,DPN,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,DPNa,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,iC65,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,C65,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NSX,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CVS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,KDM,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,NSE,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µ籣»¤¸½¼þ,Vigi,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µç¶Ï·Æ÷,VigiC,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,EZD,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,DZ158,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,SH,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,5SJ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,5SL,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,XCM,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,ACT,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,iDPN,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,HYM1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÖÇÄܶÏ·Æ÷,HYW1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÖÇÄܶÏ·Æ÷,HYW2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,DW15,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,DW16,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,DW17,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,DW45,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,CW1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,CW2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,CW3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,NA1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,HA1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,CJX,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,CJ20,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,CJ40,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -Çл»µçÈݽӴ¥Æ÷,CJ19,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,CJX2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,LC1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¿ÉÄæ½Ӵ¥Æ÷,LC2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ֱÁ÷½Ӵ¥Æ÷,LP1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,NXC,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,NC1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,NC2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,SC,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,GMC,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈȹýÔؼ̵çÆ÷,NXR,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈȹýÔؼ̵çÆ÷,NR2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈȹýÔؼ̵çÆ÷,NR3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈȹýÔؼ̵çÆ÷,JRS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈȹýÔؼ̵çÆ÷,LRI,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈȹýÔؼ̵çÆ÷,LR2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈȹýÔؼ̵çÆ÷,LR9,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT0,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT9,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT12,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT14,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT16,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT18,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT19,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RT36,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,NT0,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,NT1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,NT2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,NT3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,NT4,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -È۶ÏÆ÷,RTO,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¿ìËÙÈ۶ÏÆ÷,RS0,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¿ìËÙÈ۶ÏÆ÷,RS3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,LMZ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,LMZJ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,LMK,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,BH,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,LZZB,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,LQG,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçѹ»¥¸ÐÆ÷,JDZ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçѹ»¥¸ÐÆ÷,JDG,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçѹ»¥¸ÐÆ÷,JDJ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,NM2S,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,TBBQ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,WATS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,CDQ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,SQ1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,SRQ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,HSQ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¿ØÖƱäѹÆ÷,BK,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¿ØÖƱäѹÆ÷,JBK,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¿ØÖƱäѹÆ÷,BKD,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÈýÏà¸Éʽ±äѹÆ÷,SG,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -Óͽþʽ±äѹÆ÷,S11,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -Óͽþʽ±äѹÆ÷,S13,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçӿ±£»¤Æ÷,NUP,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçӿ±£»¤Æ÷,NTP,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçӿ±£»¤Æ÷,SPD,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçӿ±£»¤Æ÷,PRD,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷±í,6L2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷±í,42L6,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷±í,99T1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷±í,PA194,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçѹ±í,PZ194,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ƵÂʱí,PD194,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ָʾµÆ,AD16,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ָʾµÆ,AD11,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ָʾµÆ,ND16,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -°´ť,LA38,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -°´ť,LA39,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -°´ť,XB2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -°´ť,XB5,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -°´ť,K22,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÈÝÆ÷,BSMJ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÈÝÆ÷,BCMJ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÈÝÆ÷,BSM,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ¦µ翹Æ÷,CKSG,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ¦µ翹Æ÷,CKS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -οØÒÇ,WDB,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -οØÒÇ,XMT,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,IS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,QAM,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,QYM1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NXM,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,CDM3S,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,LMZ1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,QB,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,Q1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,DQ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,NXZB,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,QA,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,QP,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,QSA,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,QPS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,QAS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,QSS,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HH15,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,HA,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -SPDº󱸱£»¤Æ÷,SCB-T,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -SPDº󱸱£»¤Æ÷,SCB T,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸Éʽ±äѹÆ÷,SCB1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸Éʽ±äѹÆ÷,SCB2,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸Éʽ±äѹÆ÷,SCB3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸Éʽ±äѹÆ÷,SG10,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸Éʽ±äѹÆ÷,SC9,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸Éʽ±äѹÆ÷,SC10,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçӿ±£»¤Æ÷,T08,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,Izd1/Izd333003300SZRM1M1SZRNM1, CM1, CDM1, DZM1Izd1Izd3SZRM1-100M/3300Izd1/Izd3=50A/10Izd1M1Izd1/Izd3SZRRM1RM1TCL/Â޸ñÀÊ RM1MRM1SZRM1SZRM1-100M/3300Izd1/Izd3=50A/10Izd1,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -©µç¶Ï·Æ÷,XBK45L,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µç¶Ï·Æ÷,XBK45LE,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,XBK45,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -СÐͶÏ·Æ÷,XBK,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -©µç¶Ï·Æ÷,XBKLL,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,XBKM,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -½»Á÷½Ӵ¥Æ÷,XBKC,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -˫µçԴ,XBKQ,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,SZRM1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,RM1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,SRM1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,YLEM1-2000A/4P/1600A,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,2000/5,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -ËܿǶÏ·Æ÷,YLEM1-400A/3340Izd=350A,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,600/5,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -µçÁ÷»¥¸ÐÆ÷,SDH,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,YLEM,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,YLEF,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,YLE,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,BM3,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -µçÁ÷»¥¸ÐÆ÷,DH,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -¸ôÀ뿪¹Ø,BG1,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,HUM8-400/3300350A,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -¸ôÀ뿪¹Ø,HUH1-400 400A/3 JB,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -ÖÇÄܶÏ·Æ÷,HUWI,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,HUW,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ÍòÄÜʽ¶Ï·Æ÷,HA,ֻ,1,0,1,1,¹æÔò,0,ǰ׺ -ËܿǶÏ·Æ÷,NDM3-250H/3P125,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -ÍòÄÜʽ¶Ï·Æ÷,4P/2500A/³éÌëʽ,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ -ÓÐԴµçÁ¦Â˲¨Æ÷,AS-APF100A/0.4/M,ֻ,1,0,1,1,AIʶ±ð,0,Ԫ¼þ