Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据与字符串长度相反的大小对文本进行对齐?ASP.NET_Asp.net_Vb.net - Fatal编程技术网

根据与字符串长度相反的大小对文本进行对齐?ASP.NET

根据与字符串长度相反的大小对文本进行对齐?ASP.NET,asp.net,vb.net,Asp.net,Vb.net,我有一个包含文本的列表框,有人问我是否可以在破折号后对其内容进行解释。我的结果代码生成了如下内容: 对于破折号左侧的文本小于列表框中其他项目的最大长度(即(B20)小于(B15-B19),这是找到的最长条目,因此在破折号之前添加一些空格)的情况,该选项非常适用 但问题是,如果破折号前的文本长度相同,看起来仍然不合理。例如: 有没有办法把所有的破折号排成一行?我可以想象,我必须在破折号之前查看字符的实际像素长度,而不是长度 注: 我正在使用ASP.NET Webforms VB.NET 列表

我有一个包含文本的列表框,有人问我是否可以在破折号后对其内容进行解释。我的结果代码生成了如下内容:

对于破折号左侧的文本小于列表框中其他项目的最大长度(即(B20)小于(B15-B19),这是找到的最长条目,因此在破折号之前添加一些空格)的情况,该选项非常适用

但问题是,如果破折号前的文本长度相同,看起来仍然不合理。例如:

有没有办法把所有的破折号排成一行?我可以想象,我必须在破折号之前查看字符的实际像素长度,而不是长度

注:

  • 我正在使用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设计器告诉我必须使用什么字体…希望他能接受我目前的方法。