优化工具栏分隔条可见性检查逻辑:在UpdateButtonsVisibility方法中添加辅助方法,在其他方法中使用内联布尔表达式,确保分隔条只有在前后都有可见按钮时才显示

This commit is contained in:
zqm
2025-11-11 15:58:57 +08:00
parent 3ff7df16b6
commit 77e2109fe6

View File

@@ -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<bool> HasVisibleBrushButtons = () =>
btnBrushSize1.Visible || btnBrushSize3.Visible || btnBrushSize5.Visible ||
btnBrushSize10.Visible || btnBrushSize15.Visible || btnBrushSize25.Visible;
// 创建检查新按钮组是否有可见按钮的辅助方法
Func<bool> 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