C#:调整大小时无法更新控件高度

时间:2011-02-15 09:23:32

标签: c# .net winforms user-controls resize

我已使用文字UserControl实施了Label。我想在调整控件宽度时调整控件高度,使整个文本始终可见,如图所示: sample

我已经自定义WinForms Label来计算Label的TextBounds(文本所需的矩形),并且我引发一个名为TextBoundsChanged的事件,指示文本矩形大小已更改(请注意,在调整标签大小时始终会引发此事件。)

这很有效:我收到了这个事件,然后,我更新了我的控制高度,但控件的高度确实没有改变!!

我怀疑在TextBoundsChanged调整大小时会引发UserControl事件。 UserControl也正在调整大小,所以我担心 WinForms会在调整大小时忽略控件高度更新

我是对的吗?有人知道如何解决这个问题吗?

提前致谢。


  

编辑:用户控件不仅显示文字。这只是一个简化的样本。因此,当我减小宽度时,我的用户控件需要垂直增长,以便在标签中显示整个文本。标签不是自定义的winforms标签,因为它呈现HTML内容。此外,我正在使用.NET1,因此我无法使用自动换行属性

3 个答案:

答案 0 :(得分:2)

只需在UserControl中设置Label的Dock Anchor属性,一切都会像魅力一样(您还可以在设计时检查正确的行为) ,只需调整UserControl的大小)。 ; - )

答案 1 :(得分:0)

是否必须是UserControl?如果您将标签停靠在表单的顶部,关闭自动调整大小并启用自动换行,那么您想要的行为将非常简单。

答案 2 :(得分:0)

“WinForms在调整大小时忽略控件高度更新” 你的意思是UserControl?我非常怀疑它

确保您的事件通过所有正确的管道/控件并在显示需要时执行失效(在userContol或/和嵌入表单中)。这通常是shoudl做的。如果没有,请使用Docking as Oliver建议。