0
我正在使用此代码之间正常(具有较大的边框样式)和最大化(具有无边框样式)的WindowState之间切换。Winform客户端大小超过屏幕尺寸后最大化w /无边框
if (WindowState != FormWindowState.Maximized)
{
WindowState = FormWindowState.Maximized;
FormBorderStyle = FormBorderStyle.None;
}
else
{
WindowState = FormWindowState.Normal;
FormBorderStyle = FormBorderStyle.Sizable;
}
我也在动态调整窗体上的一些控件的布局后的变化。我发现ClientSize.Width
和ClientSize.Height
的值超出了最大/无边界状态下的实际监视器分辨率(客户端大小:1936x1216,实际显示器分辨率:1920x1200)。这导致一些控件超出界限。
是否有一种简单的方法来确保表单不超过屏幕限制(手动检查屏幕尺寸并强制表单达到该尺寸)?
这是完全正常的,允许的最大窗口大小的显示器尺寸加上边框。这确保了当您最大化窗口时,您只能看到客户区域而不看边界。所以,当你移除边界时,你现在不可避免地会得到一个太大的客户区。只要删除这段代码,这是没有必要的。如果你想重叠用户的任务栏,属于该问题的一个细节,那么你将不得不处理WM_GETMINMAXINFO消息。 –
感谢您的反馈。我没有任何问题与任务栏。我发现首先关闭边框会导致所需的行为。 – thephez
然后这段代码没有意义。一定要删除它,改变FormBorderStyle可能会有很多不良的副作用。当你发现了。 –