不幸的是(我希望其他人能发布更好的解决方案!),我知道的唯一解决方法是在表单中放置一个面板。
Set the Autoscroll
and AutoSize
父窗体的属性为 true。然后将面板尺寸增加到所需的尺寸。表单本身仍然不会大于您的屏幕分辨率,但它会显示滚动条,因此至少您可以使用设计器将超出尺寸限制的控件等放置到更大的面板上。
然后,您可能需要添加一些代码来在运行时调整表单大小,以便它足够大以显示没有滚动条的面板(并且可能还禁用自动滚动属性)。
我知道,这不是一个特别好的解决方法......
EDIT:
看起来这是有意而为之的:
MSDN https://connect.microsoft.com/VisualStudio/feedback/details/350887/windows-form-clipped-at-run-time-to-screen-resolution
财产表.尺寸:
该属性的最大值受到以下限制
运行表单的屏幕的分辨率。该值不能
每个屏幕尺寸大于 12 像素(水平 + 12
和垂直+ 12)。
再次在Microsoft Connect/公共错误跟踪 https://connect.microsoft.com/VisualStudio/feedback/details/350887/windows-form-clipped-at-run-time-to-screen-resolution:
Microsoft 发布于 2008 年 10 月 9 日 12:18
感谢您的反馈意见
在 .NET 框架上!
您所报告的问题实际上是设计使然。
在 MSDN 中http://msdn.microsoft.com/en-us/library/25w4thew.aspx http://msdn.microsoft.com/en-us/library/25w4thew.aspx, 你
可以在主题 Form.Size 属性中找到以下信息:
该属性的最大值受到分辨率的限制
运行表单的屏幕。该值不能大于12
每个屏幕尺寸上的像素(水平 + 12 和垂直 + 12)。
因此,我们不能无限地扩大我们的形式。这种行为是
与其他软件一致,例如记事本和 Microsoft Paint。
此行为在 Form.SetBoundsCore(...) 中定义
下面的代码:
最大尺寸 = SystemInformation.MaxWindowTrackSize;
if (高度 > 最大高度) {
height = max.Height; }
if (宽度 > 最大宽度) {
width = max.Width; }
[...]
谢谢 UIFx 团队
EDIT2:
由于检查是硬编码在 Forms.SetBoundsCore 中(使用 ILSpy 作为反编译器):
if (this.WindowState == FormWindowState.Normal && (base.Height != height || base.Width != width))
{
Size maxWindowTrackSize = SystemInformation.MaxWindowTrackSize;
if (height > maxWindowTrackSize.Height)
{
height = maxWindowTrackSize.Height;
}
if (width > maxWindowTrackSize.Width)
{
width = maxWindowTrackSize.Width;
}
}
并且 SetBoundsCore 是一个受保护的函数,也许您可以尝试从 Windows.Forms.Form 派生一个类,覆盖 SetBoundsCore 并且不在您的 SetBoundsCore 版本中强制执行此检查?我还没有尝试过是否有效...