【发布时间】:2011-06-29 23:08:50
【问题描述】:
如何将我的标签设置为在右侧对齐,即使它们具有不同的长度。
我有一组标签,它们彼此相邻,也在彼此下方。
现在的问题是它们总是从标签行中的左侧对齐,但我需要它们在右侧对齐,因为它们显示来自其他行的总和。
只是为了验证我不是在谈论文本对齐我正在寻找一种解决方案来对齐我的标签。
提前致谢
【问题讨论】:
-
WinForms? ASP.NET?银光? WPF?单触?
如何将我的标签设置为在右侧对齐,即使它们具有不同的长度。
我有一组标签,它们彼此相邻,也在彼此下方。
现在的问题是它们总是从标签行中的左侧对齐,但我需要它们在右侧对齐,因为它们显示来自其他行的总和。
只是为了验证我不是在谈论文本对齐我正在寻找一种解决方案来对齐我的标签。
提前致谢
【问题讨论】:
只需在设计器中将 AutoSize 属性设置为 False。调整大小以适合列。然后将 TextAlign 设置为右对齐之一。
【讨论】:
如果您向设计师询问如何执行此操作,请使用“格式”菜单。 选择要对齐的所有控件,然后单击要其他对齐的控件。执行格式 > 对齐 > 权限。
如果您尝试在运行时执行此操作,您可以循环遍历要对齐的控件并根据其宽度设置它们的 .X 属性。例如。对齐标签使其右侧位于 X=200... SomeLabel.X = 200 - SomeLabel.Width。
【讨论】:
您应该可以在运行时使用以下代码来执行此操作:
'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
【讨论】:
我的方法更奇怪。我创建标签,然后在为报告布置字段时调整要右对齐的数字(等)标签 注意:所有标签都以“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
【讨论】: