我正在实现一个根据某些属性更改其大小的用户控件。据我了解,winforms布局引擎在执行布局时会询问每个子控件其首选的大小,并告知他们可以负担的最大大小。

这是msdn中GetPreferredSize的描述:


Control.GetPreferredSize(Size proposedSize)

  
  检索可以安装控件的矩形区域的大小。


我对以下内容感到困惑:


  您可以返回大于
  约束中指出
  proposalSize参数,但是
  proposalSize应该随着
  约束减少。


这是什么意思?如果返回的尺寸大于建议的尺寸会怎样?

有人可以解释一下这是如何工作的吗?

最佳答案

该行的意思是您可以自由返回比proposedSize参数更大的首选大小,但是proposedSize仍会影响您的首选大小。例如,您为GetPreferredSize(new Size(100, 0)返回的大小应小于为GetPreferredSize(new Size(200, 0))返回的大小。

请注意,如果您返回更大的尺寸,则不会发生任何不良情况。布局引擎会为您整理所有内容,方法可能是减小其他控件的可用大小。最终,您的首选大小只是引擎的提示,以便它知道所安排的各种UI组件的相对空间需求是多少。

07-24 18:36