[Gelöst] Wie kann ich am besten Text mit Tabulatoren darstellen ?

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Genelec.

    [Gelöst] Wie kann ich am besten Text mit Tabulatoren darstellen ?

    Hallo !
    Ich erzeuge ein Textdokument, bei dem ich durch VBTabs die Abstände zwischen zwei Spalten festlege.
    Rufe ich den Text in einem Texeditor wie Notepad++ auf, erscheint alles sauber ausgerichtet. Sobald ich aber den Text in einer Richtextbox oder einer Textbox anzeigen will, werden die Tabs ignoriert und die Spaltendarstellung ist futsch.
    Welche Möglichkeiten gibt es , den Text dort ebenso formatiert anzuzeigen ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Genelec“ ()

    Nö, das hatte ich schon. Funktioniert nicht so wie man sich das vorstellt.
    Variante 1
    Im Notepad++ ist alles sauber ausgerichtet und in der Textbox nicht.
    Hier ein Beispiel:

    VB.NET-Quellcode

    1. Datum: [Date]
    2. Uhrzeit: [Time]
    3. Benutzer: [User]
    4. Anmerkungen: [Note0]


    Variante 2
    Wenn ich jetzt z.B. hergehen und hinter jedem Wert der ersten Zeile 4 Tabs setze, dann gibt es trotzdem verschieden lange Vorschübe und die zweite Spalte ist - je nach länge des Eintrags verschoben.
    Wie ich just oben editiert habe versuche ich es mal mit der selectiontabs eigenschaft.
    Ansonsten erzeuge ich den Text, indem ich mit my.computer.filesystem.writealltext ein Array in eine .txt datei schreibe. Die Tabs werden als vbtab eingefügt. Das ganze passt schon, denn der Editor zeigt es ja richtig an..
    Hallo Bernd.
    Negativ.

    Mit der SelectionTabs Methode komm ich auch nicht klar.

    VB.NET-Quellcode

    1. RichTextBox1.SelectAll()
    2. Dim value As Integer()
    3. value = RichTextBox1.SelectionTabs
    4. RichTextBox1.SelectionTabs(0) = 200
    5. RichTextBox1.SelectionTabs(1) = 100
    6. RichTextBox1.SelectionTabs(2) = 100


    Gibt eine Fehlermeldung da das Array das man mit Value abruft leer ist :cursing:

    Das sagt MSN dazu:

    "
    Hinweise Mit dieser Eigenschaft können Sie ein Array abrufen, das den Abstand für jeden Tabstopp in der aktuellen Textauswahl im RichTextBox-Steuerelement enthält. Mit dieser Eigenschaft können Sie dann die Größe jedes Tabstopps in der Textauswahl anpassen. Wenn Sie z. B. die Tabstopps im Dokument anpassen möchten, können Sie das gesamte Dokument markieren und mithilfe der SelectionTabs-Eigenschaft die Liste von Tabstopps abrufen. Sie können diese anschließend an die neuen Werte anpassen und dieser Eigenschaft neu zuweisen.
    "
    Naja , das ist ja schon fast alles was ich vorher gepostet habe. Aber hier der Rest...

    VB.NET-Quellcode

    1. Public Class Reports
    2. Private Sub Reports_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim AllReports = My.Computer.FileSystem.GetFiles(Main.ReportPath)
    4. For index As Integer = 0 To AllReports.Count - 1
    5. Dim Report As String = My.Computer.FileSystem.ReadAllText(AllReports(index))
    6. Dim Record() As String = Split(Report, vbCrLf)
    7. Dim RecordData() As String
    8. With DataGridView1
    9. If index = 0 And .Rows.Count < 1 Then
    10. ' Header erstellen
    11. .Columns.Add("Columm1", Record(2)) ' Datum
    12. .Columns.Add("Columm2", Record(8)) ' Hersteller
    13. .Columns.Add("Columm3", Record(9)) ' Modell
    14. .Columns.Add("Columm4", Record(7)) ' Munition
    15. .Columns.Add("Columm5", Record(16)) 'Kaliber
    16. .Columns.Item(0).Width = 120
    17. .Columns.Item(1).Width = 150
    18. .Rows.Add()
    19. End If
    20. RecordData = Split(Record(2), ":")
    21. .Rows(index).Cells(0).Value = RecordData(1)
    22. RecordData = Split(Record(8), ":")
    23. .Rows(index).Cells(1).Value = RecordData(1)
    24. RecordData = Split(Record(9), ":")
    25. .Rows(index).Cells(2).Value = RecordData(1)
    26. RecordData = Split(Record(15), ":")
    27. .Rows(index).Cells(3).Value = RecordData(1)
    28. RecordData = Split(Record(16), ":")
    29. .Rows(index).Cells(4).Value = RecordData(1)
    30. .Rows.Add()
    31. End With
    32. Next
    33. RichTextBox1.SelectAll()
    34. Dim value As Integer()
    35. value = RichTextBox1.SelectionTabs
    36. RichTextBox1.SelectionTabs(0) = 200
    37. RichTextBox1.SelectionTabs(1) = 100
    38. RichTextBox1.SelectionTabs(2) = 100
    39. End Sub



    @jbsl: Da ich derzeit keine ANtwort anfügen kann hier als Edit:

    VB.NET-Quellcode

    1. RichTextBox1.SelectionTabs = New Integer(200, 100, 100, 100, 300)


    Ergibt Fehlermeldung "Der Typ Integer hat keinen Konstruktor"
    ja kleiner Fehler meinerseits () fehlen...

    VB.NET-Quellcode

    1. RrichTextBox1.SelectionTabs = new integer() { 200, 100, 100, 100,300,... }

    in dem die Zahlen stehen sind keine normalen Klammern sondern geschweifte(KA wie man die nennt...xD)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    So:

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentDoubleClick
    2. For index As Integer = 0 To DataGridView1.Rows.Count - 1
    3. DataGridView1.Rows(index).DefaultCellStyle.BackColor = Color.White
    4. Next
    5. RichTextBox1.Text = My.Computer.FileSystem.ReadAllText(My.Computer.FileSystem.GetFiles(Main.ReportPath)(e.RowIndex))
    6. DataGridView1.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Red
    7. End Sub


    @jvbsl: DAS WARS !!
    Danke Volltreffer. Geht jetzt.

    Mann o Mann MS , warum einfach wenns auch kompliziert geht ??