我有一个包含文本的列表框,我被问到是否可以在破折号后证明其内容的合理性。我生成的代码产生了如下内容:
这适用于破折号左侧的文本小于从列表框中的其他项目中找到的最大长度(即(B20)小于(B15-B19),这是找到的最长条目的情况,所以在破折号前添加一些空格)。
但问题是,如果破折号之前的文本长度相同,它看起来仍然不合理。例子:
有没有办法真正排列所有的破折号?我想我必须在破折号之前查看字符的实际像素长度而不是长度?
笔记:
- 我正在使用 ASP.NET 网络表单
- 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
谢谢。