2013-10-05 1 views
0

내 엔지니어링 업무에 정말 유용한 유틸리티에 대해 생각했지만, 아아, 내가 생각하기에 문제가있는 것은 간단 할 것이다. 내 목표는 균일 한 필드에 대해 균등하지 않은 간격을 쉽게 적용하는 것입니다. 솔루션과 비슷하지만 다음과 같은 출력을 얻었 기 때문에 패딩을 조사했습니다. 여기 문자열의 VB.Net 동등한 공간 출력

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 
+4

이 코드와 어떤 종류의 정렬을 얻으려면 고정 폭 글꼴이 필요합니다. 가변 너비 글꼴에서 문자 W는 I 문자보다 큽니다. 따라서 문자 수를 기반으로하는 코드는 문자열을 정렬 할 수 없습니다. – Steve

+1

그리드 또는 목록 뷰와 같은 것을 사용하여 각 필드를 자체 열에 게시 할 수 있습니다. – Plutonix

답변

0

으로 댓글을 통해 말했다 얻기 IM의 예입니다 . 또한 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) 

다른 목록 ("열"당 하나)을 사용하여 아이디어를 명확하게 나타냅니다. 첫째로 주어진 폰트 때문에 텍스트의 길이에 의존하여 열당 가장 긴 길이를 결정해야합니다 (TextRenderer.MeasureText 통해). 그 후에 원하는 열의 수를 고려하여 앞서 설명한 최대 값으로부터 길이를 설정하기 위해 SelectionTabs의 치수를 다시 잡아야합니다. 마지막으로 "열 사이의 간격"을 배치해야하는 위치를 지정하여 값을 작성하십시오 (vbTab).

참고 : 기본 서식있는 텍스트 상자 구성은 아무런 표시없이 자동으로 탭을 설명합니다. 마지막 루프 (쓰기 부분 만 포함)를 작성하면 기본 RichTextBox (VS 2010)에 예상 동작 (3 "열")이 표시됩니다.

0

명성! 예제 코드가 작동했습니다. 감사!

SWITCH NAME    IP ADDRESS  LOCAL INTERFACE  REMOTE INTERFACE 

[email protected]@@@@@@@@@@@@@@@@@ 12.34.927.42 GigabitEthernet$/$$ GigabitEthernet$?$  
[email protected]@@@@@@@@@   12.3.123.42  GigabitEthernet$/$ GigabitEthernet$/$ 
[email protected]@@@@@@@@@@@@@  12.89.3.29  GigabitEthernet$/$$ GigabitEthernet$/$ 
[email protected]@@@@@@    12.89.3.29  GigabitEthernet$$/$ GigabitEthernet$/$