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

时间:2010-08-25 23:31:53

标签: c# winforms resize

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

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

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

        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)

什么阻止将表单调整为更小的尺寸?

9 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)

右键单击Visual Studio中的 Winform - >选择属性 - > AutoSize 将设置为 True - >将其更改为错误

OR

在您的代码中包含此行

this.AutoSize = false;

答案 3 :(得分:1)

只需将表单属性中的默认MinimumSize更改为零以外的数字(例如10)

答案 4 :(得分:0)

只需将您的所有Controls放入Panel并将Dock的{​​{1}}属性设置为Panel即可。我相信即使将Fill设置为true也能正常工作。

答案 5 :(得分:0)

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

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

以下是表单设计属性中的一些表单设置: 自动调整大小:错误 AutoSizeMode:growonly Doublebuffered:是的 启用:true FormBorderStyle:相当大 ImeMode:NoControl 锁定:错误 AutoScaleMode:字体 AccessibleRole:默认

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

我发现可以通过在代码中设置参数来再次启用所需的鼠标选择调整大小:

myForm.AutoScaleMode = Windows.Forms.AutoScaleMode.Inherit

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

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

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

答案 6 :(得分:0)

检查最小宽度和最小高度

enter image description here

设计器视图:

enter image description here

如您所见,如果您将“最小宽度”和“最小高度”设置为,同时将自动尺寸设置为false ,那么按钮现在就是您想要的尺寸了:)

答案 7 :(得分:0)

我遵循了这里的所有答案,没有一个对我有用。我继续并添加了填充,它起作用了。 转到“属性”标签,选择标签并添加填充。

答案 8 :(得分:0)

通过将 FormBorderStyle 设置为 SizableToolWindow,我能够自己解决这个问题(在寻找我自己的答案时发现了这个问题)。看起来 Sizable 边框样式具有某种默认的最小宽度(我无法将其设置为 136 以下),而 SizableToolWindow 没有。