根据与字符串长度相反的大小对文本进行对齐?ASP.NET
我有一个包含文本的列表框,有人问我是否可以在破折号后对其内容进行解释。我的结果代码生成了如下内容: 对于破折号左侧的文本小于列表框中其他项目的最大长度(即(B20)小于(B15-B19),这是找到的最长条目,因此在破折号之前添加一些空格)的情况,该选项非常适用 但问题是,如果破折号前的文本长度相同,看起来仍然不合理。例如: 有没有办法把所有的破折号排成一行?我可以想象,我必须在破折号之前查看字符的实际像素长度,而不是长度 注:根据与字符串长度相反的大小对文本进行对齐?ASP.NET,asp.net,vb.net,Asp.net,Vb.net,我有一个包含文本的列表框,有人问我是否可以在破折号后对其内容进行解释。我的结果代码生成了如下内容: 对于破折号左侧的文本小于列表框中其他项目的最大长度(即(B20)小于(B15-B19),这是找到的最长条目,因此在破折号之前添加一些空格)的情况,该选项非常适用 但问题是,如果破折号前的文本长度相同,看起来仍然不合理。例如: 有没有办法把所有的破折号排成一行?我可以想象,我必须在破折号之前查看字符的实际像素长度,而不是长度 注: 我正在使用ASP.NET Webforms VB.NET 列表
- 我正在使用ASP.NET Webforms
- VB.NET
- 列表框中每个项目的文本都是一个字符串
Public Sub JustifyDisplayName()
Const ACCOUNT_FOR_DASH As Integer = 4
Dim maxCharCount As Integer = 0
Dim whiteSpace As String = HttpUtility.HtmlDecode(" ")
'Find which one is the longest code
For Each element As TextEntry In Me
If element.Value.Length > maxCharCount Then
maxCharCount = element.Value.Length
End If
Next
'Now, extend the '-' to the max for all items
For Each element As TextEntry In Me
'See how much white space we need to inject
Dim paddingNeeded As Integer = maxCharCount - element.Value.Length
Dim tempDisplay As StringBuilder = New StringBuilder(element.Value)
If paddingNeeded > 0 Then
tempDisplay.Append(CChar(whiteSpace), paddingNeeded + ACCOUNT_FOR_DASH)
tempDisplay.Append(" - " & element.Description)
End If
tempDisplay.Append(" - " & element.Description)
element.DrillDownDisplayNameJustified = tempDisplay.ToString()
Next
End Sub
谢谢。
< P>如果在破折号之前可以将空格追加到短项,以便在破折号之前始终拥有相同的字符数,可以考虑使用单字符字体,其中每个字符占据相同的宽度-REF:./P>> P>如果使用固定宽度的字体,则可以使这更容易。除了好的快递员,我相信还有其他的 如果你不这样做,你将无法得到正确的宽度。您可以接近,但无法准确地获得,因为渲染时(H60-H95)
和(I00-I99)
之间的长度差可能无法平均划分为一个
的增量
但是如果你真的想尝试一下,你必须使用
系统.Drawing
名称空间、Graphics
类,以及Graphics
上名为MeasureString
的方法。这只是为了获取所选字体中字符串的长度:System.Drawing
不适用于web应用程序 因为第二段,所以选择这个作为答案。UI设计器告诉我必须使用什么字体…希望他能接受我目前的方法。