无法在运行时更改表单大小/边界(C#)

时间:2011-04-27 21:12:18

标签: c# winforms

我有一个由UserControl拥有的Form(后者又大量嵌套在其他Forms / UserControls中)。为了在UserControl调整大小时调整Form的大小,我在UserControl的OnLayout方法的覆盖中执行以下命令:

this.Form.Bounds = someValidRectangle;

现在当我调整应用程序窗口的大小并执行此行时,Bounds的值不会改变。我也尝试明确地设置高度和宽度无效。

在我的表单上,AutoScale = false,AutoSize = false,AutoSizeMode = GrowOnly,MinimumSize& MaximumSize = 0,0。

我以前从未遇到过这样的问题。什么可以阻止我的表单的大小实际设置?

2 个答案:

答案 0 :(得分:2)

事实证明,重型筑巢是关键。我看到这篇文章描述了调整嵌套控件大小的Windows限制:http://blogs.msdn.com/b/alejacma/archive/2008/11/20/controls-won-t-get-resized-once-the-nesting-hierarchy-of-windows-exceeds-a-certain-depth-x64.aspx

总结:由于所有调整大小调用,内核堆栈都会爆炸,从而阻止来自操作系统的进一步调整大小消息。

答案 1 :(得分:0)

您是否也覆盖了控件的 SetBoundsCore 方法?如果没有,请尝试这样做。

编辑:阅读相应的msdn文档,其中包含有关覆盖它的说明。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.setboundscore.aspx

相关问题