【问题标题】:Label position should fixed right and grow to left标签位置应向右固定并向左增长
【发布时间】:2011-06-29 23:08:50
【问题描述】:

如何将我的标签设置为在右侧对齐,即使它们具有不同的长度。 我有一组标签,它们彼此相邻,也在彼此下方。
现在的问题是它们总是从标签行中的左侧对齐,但我需要它们在右侧对齐,因为它们显示来自其他行的总和。

只是为了验证我不是在谈论文本对齐我正在寻找一种解决方案来对齐我的标签。

提前致谢

【问题讨论】:

  • WinForms? ASP.NET?银光? WPF?单触?

标签: vb.net winforms


【解决方案1】:

只需在设计器中将 AutoSize 属性设置为 False。调整大小以适合列。然后将 TextAlign 设置为右对齐之一。

【讨论】:

  • 感谢您的回答。为什么我没有想到那个愚蠢的 autosize 属性:/
【解决方案2】:

如果您向设计师询问如何执行此操作,请使用“格式”菜单。 选择要对齐的所有控件,然后单击要其他对齐的控件。执行格式 > 对齐 > 权限。

如果您尝试在运行时执行此操作,您可以循环遍历要对齐的控件并根据其宽度设置它们的 .X 属性。例如。对齐标签使其右侧位于 X=200... SomeLabel.X = 200 - SomeLabel.Width。

【讨论】:

    【解决方案3】:

    您应该可以在运行时使用以下代码来执行此操作:

    'find the current right alignment position
    Dim rightAlign As Integer = Label1.Left + Label1.Width
    'set the text (assumes AutoSize is set to True)
    Label1.Text = value
    'adjust position so the right hand point is in the same position as before
    Label1.Left = rightAlign - Label1.Width
    

    【讨论】:

      【解决方案4】:

      我的方法更奇怪。我创建标签,然后在为报告布置字段时调整要右对齐的数字(等)标签 注意:所有标签都以“lbl”结尾 - txtNew 是报表列文本框。 - 得到列的左边缘加上列的宽度减去标签的宽度。作品!只是不是我最喜欢的方式。

          ' *** NEED TO CALC POSITION FOR RIGHT JUSTIFY OF LABEL !!!!!
          If ShouldRightJustify(rs.Fields(i).Type) Then
              rpt.Section(acPageHeader).Controls(rs.Fields(i).Name & "lbl").Left = _
                  (lblCol + txtNew.Width) _
                  - rpt.Section(acPageHeader).Controls(rs.Fields(i).Name & "lbl").Width
              End If
      

      【讨论】:

        猜你喜欢
        • 2011-08-02
        • 2014-05-06
        • 1970-01-01
        • 1970-01-01
        • 2019-11-05
        • 1970-01-01
        • 1970-01-01
        • 2012-11-26
        • 1970-01-01
        相关资源
        最近更新 更多