根据窗体内部的控件设置 MinimumSize
Set MinimumSize according the controls residing inside form
我的问题的标题可能让它看起来像是重复的,但请提前阅读,因为我的问题有点不同。
我正在尝试复制一些流行媒体播放器(如 MPC-HC 或 VLC)的最小尺寸功能,当您尝试使其变小时,它达到的最小尺寸是只有 MenuStrip 和播放器控件可见。
我为此编写的代码是:
public NewMain()
{
InitializeComponent();
int ClientTop = RectangleToScreen(ClientRectangle).Top;
int height = menuStrip1.Height + panel1.Height + ClientTop - Top;
label4.Text = height.ToString();
MinimumSize = new Size(373, height);
}
问题是当它运行时,它不能正常工作并且 menuStrip1
仍然在玩家控制的 panel1
(停靠在底部)底部被阻挡了一点放置。
下面是我用上面的代码得到的图像。
下一张图片是我所期望的:
请注意,当调整表单大小时,左边的标签会更新,右边的标签是通过代码确定的高度。
我的想法是添加 Form
的 Top
和屏幕上可见的整个矩形的 Top
的差异,即标题栏的高度,否则得到的高度会更小并完全隐藏 menuStrip1
。我不想对任何值进行硬编码,因为它会使界面不太适应我以后可能要做的更改。
在这种情况下正确确定最小高度是为了保持计算的相对性,这可以通过以下方式实现:
int height = Height - (panel1.Top - menuStrip1.Bottom);
所有功劳都归功于提供此代码的 Hans Passant。我只是将其发布为标记我的问题已解决的答案。谢谢。
我的问题的标题可能让它看起来像是重复的,但请提前阅读,因为我的问题有点不同。
我正在尝试复制一些流行媒体播放器(如 MPC-HC 或 VLC)的最小尺寸功能,当您尝试使其变小时,它达到的最小尺寸是只有 MenuStrip 和播放器控件可见。
我为此编写的代码是:
public NewMain()
{
InitializeComponent();
int ClientTop = RectangleToScreen(ClientRectangle).Top;
int height = menuStrip1.Height + panel1.Height + ClientTop - Top;
label4.Text = height.ToString();
MinimumSize = new Size(373, height);
}
问题是当它运行时,它不能正常工作并且 menuStrip1
仍然在玩家控制的 panel1
(停靠在底部)底部被阻挡了一点放置。
下面是我用上面的代码得到的图像。
下一张图片是我所期望的:
请注意,当调整表单大小时,左边的标签会更新,右边的标签是通过代码确定的高度。
我的想法是添加 Form
的 Top
和屏幕上可见的整个矩形的 Top
的差异,即标题栏的高度,否则得到的高度会更小并完全隐藏 menuStrip1
。我不想对任何值进行硬编码,因为它会使界面不太适应我以后可能要做的更改。
在这种情况下正确确定最小高度是为了保持计算的相对性,这可以通过以下方式实现:
int height = Height - (panel1.Top - menuStrip1.Bottom);
所有功劳都归功于提供此代码的 Hans Passant。我只是将其发布为标记我的问题已解决的答案。谢谢。