【问题标题】:How to get the height of Label control in WinformsWinforms中如何获取Label控件的高度
【发布时间】:2023-03-13 20:00:01
【问题描述】:

由于文本的长度,我的标签将文本换行。仅当存在单行时,height 属性才会返回正确的值。如何获得正确的高度?

谢谢。

解决方案: 我正在动态创建标签并检查高度。后来标签所在的面板被添加到表单中,改变了面板的字体,从而也改变了标签的字体和高度。

【问题讨论】:

  • Height 属性返回标签的高度。如果标签是环绕的,但没有调整大小以适合文本,则标签的高度不会改变,只会改变文本的高度。
  • 标签正在调整大小,(并且它是动态创建的)来自 MS 帮助:控件的高度(以像素为单位),假设显示单行文本。

标签: .net winforms label


【解决方案1】:

获取标签首选尺寸的最简单方法是使用Label.GetPreferredSize(Size.Empty)。如果您希望获得受尺寸约束的尺寸,请使用非空尺寸的相同方法:Label.GetPreferredSize(constrainingSize)

【讨论】:

    【解决方案2】:

    选项 1:您可以使用 Graphics.MeasureStringTextRenderer.MeasureText。对于您的目的,第二个可能更容易。

    选项 2:如果标签无法正常增长以适应整个文本,请确保将 AutoSize 属性设置为 True。

    选项 3:使用文本框而不是标签。将 ReadOnly 属性设置为 true,并更改背景颜色和边框以匹配标签。然后,设置 MultiLine = True。这可能会给您带来相同的效果,但不会出现您看到的任何错误。

    【讨论】:

    • 文字长度与标签高度有何关系?
    • @bmutch:这些方法返回宽度和高度,因此您可以放弃宽度并使用高度值。
    • TextRenderer.MeasureText 方法为我提供标签中单行文本的高度,我需要标签本身的高度才能知道在其下方放置下一个标签的位置。
    • 标签高度属性将为您提供标签本身的物理高度。如果您试图让标签适合所有文本,请确保 AutoSize 属性设置为 True。如果您想找出标签需要设置多大才能适合所有文本,那么我提到的方法将为您提供。
    • 自动调整大小。并且它是环绕的,我可以看到它有 2 行,但 height 属性仍然与未环绕的标签相同。
    【解决方案3】:

    解决方案:我正在动态创建标签并检查高度。后来标签所在的面板被添加到表单中,改变了面板的字体,从而也改变了标签的字体和高度。

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 1970-01-01
      • 2016-04-17
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多