我正在实现一个根据某些属性更改其大小的用户控件。据我了解,winforms布局引擎在执行布局时会询问每个子控件其首选的大小,并告知他们可以负担的最大大小。
这是msdn中GetPreferredSize的描述:
Control.GetPreferredSize(Size proposedSize)
检索可以安装控件的矩形区域的大小。
我对以下内容感到困惑:
您可以返回大于
约束中指出
proposalSize参数,但是
proposalSize应该随着
约束减少。
这是什么意思?如果返回的尺寸大于建议的尺寸会怎样?
有人可以解释一下这是如何工作的吗?
最佳答案
该行的意思是您可以自由返回比proposedSize
参数更大的首选大小,但是proposedSize
仍会影响您的首选大小。例如,您为GetPreferredSize(new Size(100, 0)
返回的大小应小于为GetPreferredSize(new Size(200, 0))
返回的大小。
请注意,如果您返回更大的尺寸,则不会发生任何不良情况。布局引擎会为您整理所有内容,方法可能是减小其他控件的可用大小。最终,您的首选大小只是引擎的提示,以便它知道所安排的各种UI组件的相对空间需求是多少。