VB.Net等于字符串的空间输出

时间:2013-10-05 16:52:11

标签: .net vb.net dynamic-data space

考虑到我的工程工作非常酷的实用工具,但唉,我认为有问题的问题很简单。 我的目标是轻松地为不均匀的字段应用不等间距...我已经研究了填充,因为这听起来像解决方案,但我最终获得了与以下相同的输出。

RichTextBox2.Text = "HOSTNAME       IP       LOCAL       REMOTE    PLATFORM "
                     & vbNewLine

Dim largest = 0
For Each host In hostnames
        If host.ToString.Length > largest Then
            largest = host.ToString.Length
        End If
Next

For count As Integer = 0 To hostnames.Count - 1
        Dim space = largest - hostnames(count).ToString.Length
        RichTextBox2.AppendText(hostnames(count).ToString)

   For x = 0 To space -1
            RichTextBox2.AppendText(" ")
   Next 
Next

这里是我获取的一个例子

SW_1123_TEST              1123.45.6.78
SW_2        123.4
SW_3+4_T         23.123.41.21
S_1        123.4.5.67

2 个答案:

答案 0 :(得分:0)

正如通过评论所说,你不能依赖这种方法(添加空格)而不考虑给定字体的大小。此外,RichTextBox的{​​{1}}属性对这些情况非常有帮助。示例代码:

SelectionTabs

我依靠不同的列表(每个&#34;列#34;)清楚地显示这些想法。首先,您必须依靠给定字体(通过Dim inputs1 As New List(Of String) Dim inputs2 As New List(Of String) Dim inputs3 As New List(Of String) inputs1.Add("1100") inputs1.Add("120") inputs1.Add("130000") inputs2.Add("210") inputs2.Add("22000") inputs2.Add("2300") inputs3.Add("31000") inputs3.Add("3200") inputs3.Add("3300") Dim largest(3) As Integer Dim curInputs As List(Of String) = inputs1 Dim count As Integer = -1 Do count = count + 1 If (count = 1) Then curInputs = inputs2 If (count = 2) Then curInputs = inputs3 For Each item In curInputs Dim curLength As Integer = TextRenderer.MeasureText(item, RichTextBox2.Font).Width If curLength > largest(count) Then largest(count) = curLength End If Next Loop While (count < 2) RichTextBox2.SelectionTabs = New Integer() {largest(0), largest(1), largest(2)} count = -1 Do count = count + 1 RichTextBox2.Text = RichTextBox2.Text & inputs1(count) & vbTab & inputs2(count) & vbTab & inputs3(count) & Environment.NewLine Loop While (count < 2) )的文本长度来确定每列的最长长度。之后,您必须重新标注TextRenderer.MeasureText以考虑所需的列数,并根据上述最大值设置长度。最后,通过指定&#34;列与#34;之间的分隔来写入值。应放置(SelectionTabs)。

注意:默认的RichTextBox配置似乎自动考虑了标签而没有任何指示。只需编写最后一个循环(仅包括写入部分),默认的RichTextBox(VS 2010)就会显示预期的行为(3&#34;列&#34;)。

答案 1 :(得分:0)

奖励!你的示例代码工作。谢谢!

SWITCH NAME             IP ADDRESS      LOCAL INTERFACE      REMOTE INTERFACE

SW1@@@@@@@@@@@@@@@@@@   12.34.927.42    GigabitEthernet$/$$ GigabitEthernet$?$    
SW2@@@@@@@@@@           12.3.123.42     GigabitEthernet$/$  GigabitEthernet$/$  
SW3@@@@@@@@@@@@@@       12.89.3.29      GigabitEthernet$/$$ GigabitEthernet$/$  
SW4@@@@@@@              12.89.3.29      GigabitEthernet$$/$ GigabitEthernet$/$