我已使用文字UserControl
实施了Label
。我想在调整控件宽度时调整控件高度,使整个文本始终可见,如图所示:
我已经自定义WinForms Label
来计算Label的TextBounds
(文本所需的矩形),并且我引发一个名为TextBoundsChanged
的事件,指示文本矩形大小已更改(请注意,在调整标签大小时始终会引发此事件。)
这很有效:我收到了这个事件,然后,我更新了我的控制高度,但控件的高度确实没有改变!!
我怀疑在TextBoundsChanged
调整大小时会引发UserControl
事件。 UserControl
也正在调整大小,所以我担心 WinForms会在调整大小时忽略控件高度更新。
我是对的吗?有人知道如何解决这个问题吗?
提前致谢。
编辑:用户控件不仅显示文字。这只是一个简化的样本。因此,当我减小宽度时,我的用户控件需要垂直增长,以便在标签中显示整个文本。标签不是自定义的winforms标签,因为它呈现HTML内容。此外,我正在使用.NET1,因此我无法使用自动换行属性
答案 0 :(得分:2)
答案 1 :(得分:0)
是否必须是UserControl
?如果您将标签停靠在表单的顶部,关闭自动调整大小并启用自动换行,那么您想要的行为将非常简单。
答案 2 :(得分:0)
“WinForms在调整大小时忽略控件高度更新” 你的意思是UserControl?我非常怀疑它
确保您的事件通过所有正确的管道/控件并在显示需要时执行失效(在userContol或/和嵌入表单中)。这通常是shoudl做的。如果没有,请使用Docking as Oliver建议。