Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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
VB.Net字符串的等间距输出_.net_Vb.net_Dynamic Data_Space - Fatal编程技术网

VB.Net字符串的等间距输出

VB.Net字符串的等间距输出,.net,vb.net,dynamic-data,space,.net,Vb.net,Dynamic Data,Space,我的工程工作中想到了非常酷的实用程序,但遗憾的是,我认为简单的东西会有问题。 我的目标是在均匀场中轻松应用不等间距。。。我已经研究了填充,因为这听起来像是解决方案,但我最终得到了与下面相同的输出 RichTextBox2.Text = "HOSTNAME IP LOCAL REMOTE PLATFORM " & vbNewLine Dim largest = 0 For Each host In hos

我的工程工作中想到了非常酷的实用程序,但遗憾的是,我认为简单的东西会有问题。 我的目标是在均匀场中轻松应用不等间距。。。我已经研究了填充,因为这听起来像是解决方案,但我最终得到了与下面相同的输出

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

正如通过评论所说,如果不考虑给定字体的大小,就不能依赖这种方法(添加空格)。此外,
RichTextBox
有一个
SelectionTabs
属性,在这些情况下非常有用。示例代码:

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)
Dim inputs1作为新列表(字符串)
Dim inputs2作为新列表(字符串)
Dim inputs3作为新列表(字符串)
输入1.添加(“1100”)
输入1.添加(“120”)
输入1.添加(“130000”)
输入2.添加(“210”)
输入2.添加(“22000”)
输入2.添加(“2300”)
输入3.添加(“31000”)
输入3.添加(“3200”)
输入3.添加(“3300”)
将最大值(3)设置为整数
输入为列表(字符串)=输入1
整数形式的Dim计数=-1
做
计数=计数+1
如果(计数=1),则curInputs=inputs2
如果(计数=2),则curInputs=inputs3
对于curInputs中的每个项目
Dim curLength As Integer=TextRenderer.MeasureText(项目,RichTextBox2.Font).Width
如果卷曲长度>最大(计数),则
最大(计数)=卷曲长度
如果结束
下一个
循环时间(计数<2)
RichTextBox2.SelectionTabs=新整数(){最大(0)、最大(1)、最大(2)}
计数=-1
做
计数=计数+1
RichTextBox2.Text=RichTextBox2.Text&inputs1(计数)&vbTab&inputs2(计数)&vbTab&inputs3(计数)&Environment.NewLine
循环时间(计数<2)
我依靠不同的列表(每个“列”一个)来清楚地显示想法。首先,您必须根据给定字体的文本长度来确定每列的最长长度(通过
TextRenderer.MeasureText
)。之后,您必须重新标注
SelectionTabs
,以说明所需的列数,并根据上述最大值设置长度。最后,通过指定“列间分隔”的位置写入值(
vbTab


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

!您的示例代码有效。谢谢

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$/$  

您需要一个固定宽度的字体来与此代码进行任何形式的对齐。在可变宽度字体中,字母W比字母I大。因此,基于字符计数的代码无法对齐字符串。您可以使用网格或listview之类的工具将每个字段发布到自己的列中。