优化工具栏分隔条可见性检查逻辑:在UpdateButtonsVisibility方法中添加辅助方法,在其他方法中使用内联布尔表达式,确保分隔条只有在前后都有可见按钮时才显示
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user