是什么阻止我调整窗口对象的大小(缩小尺寸)?

我有一个Windows窗体对象,包含3个对象,一个树视图,一个richtextbox和一个tabcontrol。 它们没有停靠在窗体中,但它们是锚定的(顶部+左侧)。

我已经编写了代码来调整form-resize事件处理程序时调整它们的大小,但它似乎只是为了增加表单大小,也就是说,我无法将表单调整为更小的大小。 这包括我首次增加主窗体然后尝试将其恢复为原始大小的时间。

使用以下代码调整每个Formresize后,手动设置三个对象的大小:

treeView1.Height += (this.Height - oldHeight); richTextBox1.Width += (this.Width - oldWidth); tabControl1.Width += (this.Width - oldWidth); tabControl1.Height += (this.Height - oldHeight); oldHeight = this.Height; oldWidth = this.Width; 

没有任何对象具有设置的最小大小(在整个大小调整过程中它们都是0,0)

是什么阻止将表单调整为较小的大小?

自动resize (在主Form对象上设置)阻止窗口减小到小于其中包含的对象的大小。 随着主窗体中的对象在每次扩展resize时增加,主窗体在任何resize增长后都无法缩小。 通过在主Form对象上禁用自动resize,我能够重新获得resize的完全控制权。

如果上述方法无法解决问题,请检查表单最小大小是否设置为大于您需要的值。

在Visual Studio中右键单击Winform – >选择属性 – >将AutoSize设置为True – >将其更改为False

要么

在您的代码中包含此行

 this.AutoSize = false; 

只需将所有Controls放入Panel然后将Panel Dock属性设置为Fill 。 我相信即使将Autosize设置为true也能正常工作。

可能还有一种方法可以纠正无法通过正常鼠标选择resize的表单行为。

与上面的讨论相关,我发现[在VS2010中使用VB.net]我的一个标准Windows窗体不会通过鼠标选择来resize。 好像FormBorderStyle被设置为“固定”的forms。 即使将FormBorderStyle更改为SizableToolWindow也没有给出预期的鼠标大小的行为。

以下是表单设计中的一些表单设置属性:自动resize:false AutoSizeMode:growonly Doublebuffered:true启用:true FormBorderStyle:大小的ImeMode:NoControl已锁定:false AutoScaleMode:Font AccessibleRole:default

此表单的所有可见或代码属性设置及其所有Designer属性设置也与同一项目中允许鼠标大小调整的其他表单相同。 清理解决方案,并重建它也无法解决冻结forms的问题。 单击“最大化”确实有效,因此单击“最小化”。 表单大小可以按预期按代码设置。 只有鼠标调整窗体大小不能正常工作。

我发现通过在代码中设置参数,可以再次启用所需的鼠标选择resize:

myForm.AutoScaleMode = Windows.Forms.AutoScaleMode.Inherit

此参数在表单设计中已设置为“font”,也可用于其他正常工作的表单。

然后……奇怪的是……在代码中将.Inherit改回“.Font”也允许表单正确resize。

在这种情况下,代码中的设置(.Inherit或.Font)似乎是纠正Formresize问题的关键因素。 似乎系统没有向用户显示隐藏的参数,这些参数会以某种方式干扰表单的预期操作。

检查最小宽度和最小高度

在此处输入图像描述

设计师视图:

在此处输入图像描述

如您所见,如果设置最小宽度和最小高度, 同时将自动大小设置为false ,则按钮现在是您希望它的大小:)