From 77e2109fe603066c33d629c7e5b9e731eb745f9d Mon Sep 17 00:00:00 2001 From: zqm Date: Tue, 11 Nov 2025 15:58:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E5=88=86=E9=9A=94=E6=9D=A1=E5=8F=AF=E8=A7=81=E6=80=A7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E9=80=BB=E8=BE=91=EF=BC=9A=E5=9C=A8UpdateButtonsVisib?= =?UTF-8?q?ility=E6=96=B9=E6=B3=95=E4=B8=AD=E6=B7=BB=E5=8A=A0=E8=BE=85?= =?UTF-8?q?=E5=8A=A9=E6=96=B9=E6=B3=95=EF=BC=8C=E5=9C=A8=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E4=B8=AD=E4=BD=BF=E7=94=A8=E5=86=85=E8=81=94?= =?UTF-8?q?=E5=B8=83=E5=B0=94=E8=A1=A8=E8=BE=BE=E5=BC=8F=EF=BC=8C=E7=A1=AE?= =?UTF-8?q?=E4=BF=9D=E5=88=86=E9=9A=94=E6=9D=A1=E5=8F=AA=E6=9C=89=E5=9C=A8?= =?UTF-8?q?=E5=89=8D=E5=90=8E=E9=83=BD=E6=9C=89=E5=8F=AF=E8=A7=81=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=97=B6=E6=89=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/Setting.cs | 95 ++++++++++++++----- 1 file changed, 69 insertions(+), 26 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index 9b5fb8c..eca186e 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -735,6 +735,8 @@ namespace JoyD.Windows.CS } } + + // 检查当前是否在温差图绘制状态下 // 同时检查选中行和选中单元格,确保点击单元格时也能显示画笔按钮 if (_isTempDiffDrawingMode && (dataGridViewTempDiff.SelectedRows.Count > 0 || dataGridViewTempDiff.SelectedCells.Count > 0) && dataGridViewTempDiff.Visible) @@ -775,17 +777,20 @@ namespace JoyD.Windows.CS // 确保当前选中的画笔大小按钮处于选中状态 UpdateBrushSizeButtonSelection(_currentBrushSize); - // 控制分隔条可见性:当前后都有按钮显示时显示分隔条 - // 第一个分隔条:前有btnDeleteTempDiff显示,后有btnBrushSize1显示 + // 控制分隔条可见性:分隔条只有在前后都有可见按钮时才显示 + // 与UpdateButtonsVisibility方法保持一致的逻辑 + bool hasVisibleBrushButtons = btnBrushSize1.Visible || btnBrushSize3.Visible || btnBrushSize5.Visible || + btnBrushSize10.Visible || btnBrushSize15.Visible || btnBrushSize25.Visible; + bool hasVisibleNewButtons = btnNewTempRegion.Visible || btnLoadTempRegion.Visible || btnSaveTempRegion.Visible || + btnNewTempDiff.Visible || btnLoadTempDiff.Visible || btnSaveTempDiff.Visible; + if (firstSeparator != null) { - firstSeparator.Visible = btnDeleteTempDiff.Visible && btnBrushSize1.Visible; + firstSeparator.Visible = btnDeleteTempDiff.Visible && hasVisibleBrushButtons; } - // 第二个分隔条:前有btnBrushSize25显示,检查后面是否有可见按钮 - // 在温差图绘制模式下,后面的按钮组(新按钮组)通常不可见,所以分隔条也隐藏 if (secondSeparator != null) { - secondSeparator.Visible = false; // 在温差图绘制模式下,后面的按钮组通常不可见 + secondSeparator.Visible = hasVisibleBrushButtons && hasVisibleNewButtons; } } else @@ -1015,6 +1020,16 @@ namespace JoyD.Windows.CS } } + // 创建检查是否有画笔按钮可见的辅助方法 + Func HasVisibleBrushButtons = () => + btnBrushSize1.Visible || btnBrushSize3.Visible || btnBrushSize5.Visible || + btnBrushSize10.Visible || btnBrushSize15.Visible || btnBrushSize25.Visible; + + // 创建检查新按钮组是否有可见按钮的辅助方法 + Func HasVisibleNewButtons = () => + btnNewTempRegion.Visible || btnLoadTempRegion.Visible || btnSaveTempRegion.Visible || + btnNewTempDiff.Visible || btnLoadTempDiff.Visible || btnSaveTempDiff.Visible; + switch (state) { case 0: // 初始状态/就绪状态 @@ -1044,14 +1059,16 @@ namespace JoyD.Windows.CS // 隐藏区域编号设置控件 txtRegionNumber.Visible = false; txtRegionNumber.Text = ""; // 清空文本框 - // 控制分隔条可见性:前后都没有显示的按钮,隐藏分隔条 + // 控制分隔条可见性:分隔条只有在前后都有可见按钮时才显示 if (firstSeparator != null) { - firstSeparator.Visible = false; // 前面按钮(btnDeleteTempDiff)和后面按钮(所有画笔按钮)都不可见 + // 第一个分隔条:前面按钮(btnDeleteTempDiff)和后面按钮(所有画笔按钮)都不可见 + firstSeparator.Visible = btnDeleteTempDiff.Visible && HasVisibleBrushButtons(); } if (secondSeparator != null) { - secondSeparator.Visible = false; // 前面按钮(所有画笔按钮)不可见,后面按钮可见但不需要分隔条 + // 第二个分隔条:前面按钮(所有画笔按钮)不可见,后面按钮组有可见按钮 + secondSeparator.Visible = HasVisibleBrushButtons() && HasVisibleNewButtons(); } break; @@ -1090,14 +1107,16 @@ namespace JoyD.Windows.CS btnBrushSize10.Visible = false; btnBrushSize15.Visible = false; btnBrushSize25.Visible = false; - // 控制分隔条可见性:前后都没有显示的按钮,隐藏分隔条 + // 控制分隔条可见性:分隔条只有在前后都有可见按钮时才显示 if (firstSeparator != null) { - firstSeparator.Visible = false; // 前面按钮(btnDeleteTempDiff)和后面按钮(所有画笔按钮)都不可见 + // 第一个分隔条:前面按钮(btnDeleteTempDiff)和后面按钮(所有画笔按钮)都不可见 + firstSeparator.Visible = btnDeleteTempDiff.Visible && HasVisibleBrushButtons(); } if (secondSeparator != null) { - secondSeparator.Visible = false; // 前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见 + // 第二个分隔条:前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见 + secondSeparator.Visible = HasVisibleBrushButtons() && HasVisibleNewButtons(); } break; case 1: // 选中区域状态 @@ -1134,14 +1153,16 @@ namespace JoyD.Windows.CS btnBrushSize10.Visible = false; btnBrushSize15.Visible = false; btnBrushSize25.Visible = false; - // 控制分隔条可见性:前后都没有显示的按钮,隐藏分隔条 + // 控制分隔条可见性:分隔条只有在前后都有可见按钮时才显示 if (firstSeparator != null) { - firstSeparator.Visible = false; // 前面按钮(btnDeleteTempDiff)和后面按钮(所有画笔按钮)都不可见 + // 第一个分隔条:前面按钮(btnDeleteTempDiff)和后面按钮(所有画笔按钮)都不可见 + firstSeparator.Visible = btnDeleteTempDiff.Visible && HasVisibleBrushButtons(); } if (secondSeparator != null) { - secondSeparator.Visible = false; // 前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见 + // 第二个分隔条:前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见 + secondSeparator.Visible = HasVisibleBrushButtons() && HasVisibleNewButtons(); } break; @@ -1171,16 +1192,16 @@ namespace JoyD.Windows.CS btnBrushSize10.Visible = false; btnBrushSize15.Visible = false; btnBrushSize25.Visible = false; - // 控制分隔条可见性 - // 第一个分隔条:前面按钮(btnDeleteTempDiff)可见,后面按钮(所有画笔按钮)初始不可见 + // 控制分隔条可见性:分隔条只有在前后都有可见按钮时才显示 if (firstSeparator != null) { - firstSeparator.Visible = false; // 初始状态下画笔按钮不可见,所以分隔条也隐藏 + // 第一个分隔条:前面按钮(btnDeleteTempDiff)可见,检查后面是否有可见的画笔按钮 + firstSeparator.Visible = btnDeleteTempDiff.Visible && HasVisibleBrushButtons(); } - // 第二个分隔条:前面按钮(所有画笔按钮)初始不可见,后面按钮(新按钮组)不可见 if (secondSeparator != null) { - secondSeparator.Visible = false; + // 第二个分隔条:前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见 + secondSeparator.Visible = HasVisibleBrushButtons() && HasVisibleNewButtons(); } break; } @@ -1248,21 +1269,43 @@ namespace JoyD.Windows.CS // 确保当前选中的画笔大小按钮处于选中状态 UpdateBrushSizeButtonSelection(_currentBrushSize); - // 控制分隔条可见性 - ToolStripSeparator toolStripSeparator = null; + // 控制分隔条可见性,与UpdateButtonsVisibility方法保持一致的逻辑 + ToolStripSeparator firstSeparator = null; // 删除温差图例按钮和画笔大小按钮之间的分隔条 + ToolStripSeparator secondSeparator = null; // 画笔大小按钮和新按钮组之间的分隔条 + + // 查找分隔条 for (int i = 0; i < toolStrip.Items.Count - 1; i++) { + // 查找第一个分隔条 if (toolStrip.Items[i] == btnDeleteTempDiff && toolStrip.Items[i + 1] is ToolStripSeparator) { - toolStripSeparator = toolStrip.Items[i + 1] as ToolStripSeparator; - break; + firstSeparator = toolStrip.Items[i + 1] as ToolStripSeparator; + } + // 查找第二个分隔条 + else if (toolStrip.Items[i] == btnBrushSize25 && toolStrip.Items[i + 1] is ToolStripSeparator) + { + secondSeparator = toolStrip.Items[i + 1] as ToolStripSeparator; } } - if (toolStripSeparator != null) + // 更新分隔条可见性 + if (firstSeparator != null) { - toolStripSeparator.Visible = btnDeleteTempDiff.Visible && btnBrushSize1.Visible; + bool hasVisibleBrushButtons = btnBrushSize1.Visible || btnBrushSize3.Visible || btnBrushSize5.Visible || + btnBrushSize10.Visible || btnBrushSize15.Visible || btnBrushSize25.Visible; + firstSeparator.Visible = btnDeleteTempDiff.Visible && hasVisibleBrushButtons; } + if (secondSeparator != null) + { + bool hasVisibleBrushButtons = btnBrushSize1.Visible || btnBrushSize3.Visible || btnBrushSize5.Visible || + btnBrushSize10.Visible || btnBrushSize15.Visible || btnBrushSize25.Visible; + bool hasVisibleNewButtons = btnNewTempRegion.Visible || btnLoadTempRegion.Visible || btnSaveTempRegion.Visible || + btnNewTempDiff.Visible || btnLoadTempDiff.Visible || btnSaveTempDiff.Visible; + secondSeparator.Visible = hasVisibleBrushButtons && hasVisibleNewButtons; + } + + // 显示btnBrushSize25(确保所有画笔大小按钮都可见) + btnBrushSize25.Visible = true; } } else