添加根据toolStripContainer宽度动态调整toolStrip和TopToolStripPanel尺寸的功能
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@@ -63,6 +63,12 @@ namespace JoyD.Windows.CS
|
||||
_timer = new Timer { Interval = 1000 };
|
||||
_timer.Tick += Timer_Tick;
|
||||
|
||||
// 添加窗体大小变化事件处理
|
||||
this.Resize += new EventHandler(Setting_Resize);
|
||||
|
||||
// 初始调整一次toolStrip尺寸
|
||||
AdjustToolStripDimensions();
|
||||
|
||||
// 初始隐藏颜色选择按钮
|
||||
btnSelectColor.Visible = false;
|
||||
|
||||
@@ -2255,5 +2261,68 @@ namespace JoyD.Windows.CS
|
||||
catch {}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 窗体大小变化事件处理程序
|
||||
/// 根据toolStripContainer宽度动态调整toolStrip和TopToolStripPanel的尺寸
|
||||
/// </summary>
|
||||
private void Setting_Resize(object sender, EventArgs e)
|
||||
{
|
||||
// 调用调整toolStrip尺寸的方法
|
||||
AdjustToolStripDimensions();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据toolStripContainer宽度动态调整toolStrip和TopToolStripPanel的尺寸
|
||||
/// </summary>
|
||||
private void AdjustToolStripDimensions()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 确保toolStripContainer和toolStrip不为null
|
||||
if (toolStripContainer != null && toolStrip != null)
|
||||
{
|
||||
// 获取toolStripContainer的宽度
|
||||
int containerWidth = toolStripContainer.Width;
|
||||
|
||||
// 设置toolStrip的宽度与container一致
|
||||
toolStrip.Width = containerWidth;
|
||||
|
||||
// 计算可见按钮的数量
|
||||
int visibleButtonCount = 0;
|
||||
foreach (ToolStripItem item in toolStrip.Items)
|
||||
{
|
||||
if (item.Visible && !(item is ToolStripSeparator))
|
||||
{
|
||||
visibleButtonCount++;
|
||||
}
|
||||
}
|
||||
|
||||
// 根据可见按钮数量和容器宽度计算需要的行数
|
||||
// 假设每个按钮和分隔符大约占用60像素宽度
|
||||
int buttonWidth = 60;
|
||||
int buttonsPerRow = Math.Max(1, containerWidth / buttonWidth);
|
||||
int requiredRows = (int)Math.Ceiling((double)visibleButtonCount / buttonsPerRow);
|
||||
|
||||
// 设置TopToolStripPanel的最小高度,确保有足够空间显示多行按钮
|
||||
int buttonHeight = 35; // 按钮高度加上边距
|
||||
int requiredHeight = requiredRows * buttonHeight + 10; // 加上额外边距
|
||||
|
||||
// 限制最大高度,防止高度过大
|
||||
requiredHeight = Math.Min(requiredHeight, 200);
|
||||
|
||||
// 设置TopToolStripPanel的最小高度
|
||||
toolStripContainer.TopToolStripPanel.MinimumSize = new Size(toolStripContainer.TopToolStripPanel.MinimumSize.Width, requiredHeight);
|
||||
|
||||
// 重新布局toolStrip和容器
|
||||
toolStrip.PerformLayout();
|
||||
toolStripContainer.PerformLayout();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("调整toolStrip尺寸失败: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user