Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:调整大小时无法更新控件高度_C#_.net_Winforms_User Controls_Resize - Fatal编程技术网

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

C#:调整大小时无法更新控件高度,c#,.net,winforms,user-controls,resize,C#,.net,Winforms,User Controls,Resize,我已经用一个文本标签实现了一个UserControl。我想在调整控件宽度时调整控件高度,使整个文本始终可见,如图所示: 我自定义了WinForms标签来计算标签的TextBounds(文本所需的矩形),并引发了一个名为TextBoundsChanged的事件,该事件指示文本矩形大小已更改(请注意,在调整标签大小时始终引发此事件) 这是有效的:我收到事件,然后,我更新我的控件高度,但是控件的高度实际上没有改变 我怀疑在调整UserControl的大小时引发了textbundschanged事件。

我已经用一个文本
标签实现了一个
UserControl
。我想在调整控件宽度时调整控件高度,使整个文本始终可见,如图所示:

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

这是有效的:我收到事件,然后,我更新我的控件高度,但是控件的高度实际上没有改变

我怀疑在调整
UserControl
的大小时引发了
textbundschanged
事件。
UserControl
也正在调整大小,因此我担心WinForms在调整大小时会忽略控件高度的更新

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

提前谢谢


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


它必须是
用户控件吗?如果您将标签固定到表单顶部,关闭自动调整大小并启用自动换行功能,则所需的行为将非常简单。

“WinForms在调整大小时忽略控件高度更新”
你是说用户控制?我对此深表怀疑


确保事件通过所有正确的管道/控件,并在需要显示时(在UserControl或/和嵌入表单中)执行失效。通常应该这样做。如果没有,请按照Oliver的建议使用停靠。

只需在UserControl中设置标签的属性,一切都将像charme一样工作(您也可以在设计时检查正确的行为,只需调整UserControl的大小即可)。;-)

你说的“嫌疑犯”是什么意思。您不能100%确定控件的大小是否已调整(至少“逻辑上”,而不是在显示中)?如果在调整大小结束之前设置了一些高度,则会发生这种情况=>您提供的值将被简单地覆盖。是的,它必须是用户控件。该示例是一个简化版本。我在用户控件中显示更多信息,文本是控件的主体。此外,文本标签是显示HTML解析内容的扩展标签。+1:这是一个经过验证的解决方案(我通常会这样做来消除手动调整大小的奇怪效果)@Oliver:阅读@Eric answer上的评论。这只是一个简化版本。停靠和锚点属性对我来说是众所周知的,但在这种情况下,我需要管理调整大小。@Daniel:你的问题在哪里?您只需使用VS设计器打开
UserControl
,然后像在表单中一样放置和配置组件。然后(事先点击构建的解决方案)将UserControl放在窗体上,并像工具箱中的任何其他控件一样使用它。@Oliver:是的。谢谢,我知道如何使用Visual Studio WinForms designer。当我减小宽度时,我的用户控件需要垂直增长,以便在标签中显示整个文本。该标签不是自定义winforms标签,因为它呈现HTML内容。另外,我使用的是.NET1,所以word wrap属性对我不可用。@Daniel:请用您上次评论中的要点更新您的问题。如果我们一开始就知道这些限制,你就不会有那么多的假阳性答案。