【问题标题】:Resizing labels in Winforms to Left将 Winforms 中的标签大小调整为左侧
【发布时间】:2010-07-06 14:24:47
【问题描述】:

我有 15 到 20 个标签,它们的文本大小可变,文本框排列在表单中。文本框排列在标签旁边。表单的字体和颜色以及表单控件可以由用户在运行时进行配置。当我右对齐标签并将自动增长属性设置为 true 时,每当字体样式发生变化(比如从 Arial 到 Georgia)时,右对齐的标签不再右对齐。

我需要一个标签解决方案(用于 winforms),以便在字体大小更改时自动向左增长。

【问题讨论】:

    标签: c# .net windows .net-2.0


    【解决方案1】:

    将您的标签属性设置为以下;

    AutoSize = false;
    TextAlign = TopRight (or anything to right)
    

    然后手动将标签大小调整到最大区域以适应最长的文本。这对我有用。

    【讨论】:

    • 不知道为什么这个答案没有任何赞成票。这是 IMO 最简单的答案。
    【解决方案2】:

    将锚点设置为“右”而不是“左”(您可能还会有“上”,在这种情况下它是“右上”而不是“左上”),它应该在右(左)方向增长我相信。我已经有一段时间没有这样做了,所以请尝试一下,让我知道结果如何。

    【讨论】:

    • 现在我有机会尝试了。
    • 我看到了两种解决方案,第一种是最简单的,即确保标签中有足够的宽度来接受您希望看到的最长字符串,然后使用右对齐的文本正确定位它。第二种是创建一个新的标签类,继承自基础Label,添加一个X2或RHS int值,然后覆盖OnAutoSizeChanged事件,以确保标签的X位置随着标签宽度的增长而相应调整。跨度>
    • 非常感谢您提供的信息。我或多或少地解决了这个问题。
    • 您能否在此处发布您的解决方案作为您问题的答案,以便将来帮助其他人。您也可以接受自己的答案作为正确答案。
    • @nagesh46s,我不是说要接受我的回答。我认为您已经找到了一个解决方案,可以为您解决问题,无论是基于我所说的还是其他。 可以在此处添加该解决方案作为您问题的答案并接受该答案吗?
    【解决方案3】:

    您可能可以使用TableLayoutPanel

    【讨论】:

      【解决方案4】:

      您也可以使用RightToLeft label property 而不是修改 Anchor。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。我的解决方法是创建一个简单的函数来移动标签,我在任何更改标签大小的事件或代码之后调用它。

        输入要向左增长的标签名称,以及标签右端的X坐标。然后在对标签进行任何更改后调用此函数。

        private void repositionLabel(Label lab, int endPoint)
                {
                    lab.Left = endPoint - lab.Width; 
                }
        

        例如,您有一个名为 myLabel 的标签位于 (75,75),它当前的宽度为 25,您总是希望它在 (100,75) 处结束。那么当这种情况发生时:

        myLabel.Text = "blah blah blah blah blah blah";
        

        然后你跟随文本变化:

        repostitionLabel(myLable, 100);
        

        这将使它看起来像向左扩展的标签。

        【讨论】:

          猜你喜欢
          • 2017-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-29
          • 1970-01-01
          • 1970-01-01
          • 2022-10-13
          • 1970-01-01
          相关资源
          最近更新 更多