我有一个UserControl拥有的窗体(它反过来又嵌套在其他窗体/UserControl中)。为了在UserControl调整大小时调整窗体的大小,我在UserControl的OnLayout方法的重写中执行以下命令:this.Form.Bounds = someValidRectangle;
现在,当我调整应用程序窗口的大小时,这行代码执行时,Bounds的值不会改变,我也尝试过显式设置Height和Width,但没有效果。
在我的窗体上,自动缩放设置为假,自动调整大小设置为假,自动调整大小模式设置为仅增长,最小大小和最大大小设置为0,0。
我以前从未遇到过这样的问题。什么会阻止窗体大小的实际设置?
3条答案
按热度按时间xzabzqsa1#
原来沉重的嵌套才是关键。我偶然发现了这篇文章,它描述了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
总结:由于所有的resize调用,内核堆栈崩溃,阻止了来自操作系统的进一步的resize消息。
iyfamqjs2#
是否也重写了控件的SetBoundsCore方法?如果没有,请尝试重写。
编辑:同时阅读相应的msdn文档,其中包含有关覆盖它的说明。http://msdn.microsoft.com/en-us/library/system.windows.forms.control.setboundscore.aspx
xghobddn3#
在我的例子中,WindowsState影响了它。下面的代码对我很有效: