Position des Tabulators in einer ListBox festlegen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Elephant.

    Position des Tabulators in einer ListBox festlegen

    Ich habe mehrere Textzeilen in denen jeweils 2 Informationen getrennt durch TAB stehen.
    Die möchte ich in einer ListBox anzeigen so das man die Zeile die einen anspricht selektieren kann.
    Nur hat die erste Information in den Zeilen sehr unterschiedliche Längen, sodass die normale Postion des Tabulators nicht dafür sorgt, dass es vernünftig untereinander steht.
    Der Tabulator müsste vielleicht nach 35/40 Zeichen sein.
    Ist das möglich und wenn ja wie?
    Nur hat die erste Information in den Zeilen sehr unterschiedliche Längen, sodass die normale Postion des Tabulators nicht dafür sorgt, dass es vernünftig untereinander steht.

    Hallo
    @Elephant, schau mal hier rein. So ein Thema hatte ich vor einem Monat. Schau dir vor allem die Lösung von @Takafusa an. ^^
    Code für's Befüllen der ListBox elegant zusammenfassen
    Mit den Hinweisen habe ich mir folgende Function gebastelt

    VB.NET-Quellcode

    1. 'Pseude TAB setzen
    2. Function PseudoTAB(ByVal Urprungstext As String) As String
    3. Dim WelcheStelle As Integer
    4. Dim ZielText As String
    5. Dim TextTeile(1) As String
    6. WelcheStelle = InStrRev(Urprungstext, vbTab) 'An welcher Stelle = (String, Gesucht)
    7. TextTeile(0) = Mid(Urprungstext, 1, WelcheStelle - 1) 'Teilstring = (Ursprungsstring, Ab Position, WievielZeichen)
    8. TextTeile(1) = Mid(Urprungstext, WelcheStelle + 1) 'Teilstring = (Ursprungsstring, Ab Position, WievielZeichen)
    9. ZielText = String.Format("{0,-35}{1}", TextTeile(0), TextTeile(1)) 'ZielString = ("{Teilzähler, -(Linksbündig)Auf wie viele Zeichen aufblasen}{Teilzähler}", Erster String, Zweiter String)
    10. Return ZielText
    11. End Function
    @Elephant

    Kannst du nicht ein bisschen Code reinbringen wie die Textbox gefüllt wird? Oder wird der Text direkt eingegeben?
    Ich nehme an die TextBox ist auf MultiLine umgestellt oder?

    Ich würde auf die Vb.Net-Konvention umsteigen. InStrRev, Mid ist VB6.

    Für VB.Net gibt es
    string.LastIndexOf
    string.substring
    Environment.NewLine


    EDIT:
    Gut ist es zwar nicht gelöst, aber zeigt sicher einen Anfang. Siehe Anhang Form1


    Freundliche Grüsse

    exc-jdbi
    Dateien
    • Form1.zip

      (4,11 kB, 56 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „exc-jdbi“ ()

    exc-jdbi schrieb:

    Kannst du nicht ein bisschen Code reinbringen wie die Textbox gefüllt wird? Oder wird der Text direkt eingegeben?


    Es gibt einen Ordner, in dem sind Dateien und eine Textdatei mit Infos zu den Dateien.
    Die Textdatei hat so viele Zeilen wie Dateien im Ordner sind (halt eine Zeile pro Datei).
    In jeder Zeile stehen 2 Informationen zur Datei, nur sind die Informationen halt sehr unterschiedlich lang.
    Sodas ein normaler Tab nicht dafür sorgt, dass die 2 Informationen in 2 Spalten vernünftig untereinander in der ListBox stehen.

    Hier mal der Code fürs Laden der Textdatei und aufteilen in die einzelnen Zeilen.

    VB.NET-Quellcode

    1. Dim fileReader As String = My.Computer.FileSystem.ReadAllText(InfoDatei.txt)
    2. Dim ArrayOfString() As String = fileReader.Split(Environment.NewLine)


    Hier der Code fürs befüllen der ListBox

    VB.NET-Quellcode

    1. ListBox2.Items.Clear() 'Alle Einträge in der ListBox löschen
    2. For I = 0 To AnzahlZeilen - 1 'Array beginnt ja mit Null, 20 gehen dann z.B. von 0 bis 19
    3. AusgabeText = PseudoTAB(ArrayOfString(I))
    4. ListBox2.Items.Add(AusgabeText) 'Interpet Song Name in ListBox schreiben
    5. Next


    Hier die Funktion für den Pseudo Tab, hoffentlich jetzt ohne VB6 Altlasten.
    (Danke für den Hinweis)

    VB.NET-Quellcode

    1. 'Pseude TAB setzen
    2. Function PseudoTAB(ByVal Urprungstext As String) As String
    3. Dim WelcheStelle As Integer
    4. Dim ZielText As String
    5. Dim TextTeile(1) As String
    6. WelcheStelle = Urprungstext.LastIndexOf(vbTab) 'An welcher Stelle = String.Befehl(Gesucht)
    7. TextTeile(0) = Urprungstext.Substring(0, WelcheStelle) 'Teilstring = Ursprungsstring.Befehl(Ab Position, WievielZeichen) Das Erste Zeichen staht an Position 0
    8. TextTeile(1) = Urprungstext.Substring(WelcheStelle) 'Teilstring = Ursprungsstring.Befehl(Ab Position, WievielZeichen) Das Erste Zeichen staht an Position 0
    9. ZielText = String.Format("{0,-35}{1}", TextTeile(0), TextTeile(1)) 'ZielString = ("{Teilzähler, -(Linksbündig)Auf wie viele Zeichen aufblasen}{Teilzähler}", Erster String, Zweiter String)
    10. Return ZielText
    11. End Function

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