ListBox.SelectedItem - Zeilenumbruch entfernen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    ListBox.SelectedItem - Zeilenumbruch entfernen

    Hallo zusammen,

    ich speichere Einträgr in einer ListBox (DataGrid ist aus mehreren Gründen eher unpraktisch hierbei). Allerdings sind in jedem Listbox Item ein Zeilenumbruch drin. Entsprechend sieht ein MsgBox("Gewähltes Item: " + ListBox1.SelectedItem) so aus:



    Gibt es eine Möglichkeit den Zeilenumbruch zu entfernen? Ein ListBox1.SelectedItem.ToString.Replace(vbNewLine, "") hilft auch nicht.

    Grüße!

    HeizungAuf5 schrieb:

    Ein ListBox1.SelectedItem.ToString.Replace(vbNewLine, "") hilft auch nicht.
    weil Du es - so wie Du es schreibst - falsch anwendest. Das hier wäre richtig:

    VB.NET-Quellcode

    1. ListBox1.SelectedItem = ListBox1.SelectedItem.ToString.Replace(vbNewLine, "")

    Statt vbNewLine (da aus dem VB6-Namespace) sollte man Environment.NewLine verwenden und statt dem "" ggf. Nothing oder String.Empty.

    btw: Ich würd interessehalber mal die Gründe erfahren, die gegen ein DGV sprechen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @HeizungAuf5 Wie kommen denn die Items in die ListBox? Dort scheint mir der Fehler zu liegen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VaporiZed schrieb:

    Das hier wäre richtig:
    VB.NET-Quellcode
    ListBox1.SelectedItem = ListBox1.SelectedItem.ToString.Replace(vbNewLine, "")


    VB.NET-Quellcode

    1. Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    2. ListBox1.SelectedItem = ListBox1.SelectedItem.ToString.Replace(vbNewLine, "")
    3. MsgBox("Gewähltes Item: " + ListBox1.SelectedItem)
    4. End Sub


    Bringt weitehrin:




    RodFromGermany schrieb:

    Wie
    kommen denn die Items in die ListBox

    Das geht über ca. 5
    Ecken. Die Kurzform ist, dass ein FTP Server abgefragt wird, was es für
    Dateien hat und die dann dort eingefügt werden.

    Es gibt dann einen String mit mehreren Zeilen, der alle Dateien beinahaltet:
    Datei1.dat
    Datei2.dat
    Datei3.data
    Datei4.data
    ...

    Eingefügt werden die Dateien dann so (es werden nur .data-Dateien angezeigt)

    VB.NET-Quellcode

    1. For Each line In FileList.Split(vbNewLine)
    2. If line.Contains(".data") Then
    3. ListBox1.Items.Add(line.Replace(".data", ""))
    4. End If
    5. Next


    Grüße!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „HeizungAuf5“ ()

    MsgBox("Gewähltes Item: " + ListBox1.SelectedItem) :?: Option Strict On!
    damit geht's:

    VB.NET-Quellcode

    1. ListBox1.Items(ListBox1.SelectedIndex) = ListBox1.SelectedItem.ToString.Replace(Microsoft.VisualBasic.vbNewLine, Nothing)
    2. Microsoft.VisualBasic.MsgBox("Gewähltes Item: " + ListBox1.SelectedItem.ToString)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Option Strict On!

    Dann fliegt mir aber der restliche halbe Code um die Ohren:


    VaporiZed schrieb:

    damit geht's:
    VB.NET-Quellcode

    ListBox1.Items(ListBox1.SelectedIndex) = ListBox1.SelectedItem.ToString.Replace(Microsoft.VisualBasic.vbNewLine, Nothing)
    Microsoft.VisualBasic.MsgBox("Gewähltes Item: " + ListBox1.SelectedItem.ToString)



    VB.NET-Quellcode

    1. Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    2. ListBox1.Items(ListBox1.SelectedIndex) = ListBox1.SelectedItem.ToString.Replace(Microsoft.VisualBasic.vbCrLf, Nothing)
    3. Microsoft.VisualBasic.MsgBox("Gewähltes Item: " + ListBox1.SelectedItem.ToString)
    4. End Sub





    Hab auch mal das hinzufügen etwas "getrimmt".

    VB.NET-Quellcode

    1. For Each line In FileList.Split(vbNewLine)
    2. If line.Contains(".data") Then
    3. Dim AddItem As String
    4. AddItem = line.Replace(".data", "")
    5. AddItem = AddItem.Replace(Environment.NewLine, Nothing)
    6. AddItem = AddItem.Replace(Microsoft.VisualBasic.vbCrLf, Nothing)
    7. ListBox1.Items.Add(AddItem)
    8. End If
    9. Next


    Leider auch ohne Funktion

    HeizungAuf5 schrieb:

    Dann fliegt mir aber der restliche halbe Code um die Ohren

    Dann weißt Du ja, was Du noch zu tun hast.

    Dann musst Du aber auch nachschauen, was konkret in Deinen line-Kandidaten für Zeilenumbrüche drin sind. vbCr? vbLf? Was ganz anderes? Die musst Du suchen und ersetzen.
    Bilder
    • ItWorks.png

      24,05 kB, 990×319, 103 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Dann weißt Du ja, was Du noch zu tun hast.


    Das könnte schwierig werden, weil ich manche Funktionen einfach brauche, die mir Strict on raus wirft-

    Testweise habe ich das ganze mal in ein Extra Modul ausgelagert, welches mir nur den Zeielnumbruch weg kürzen soll (mit dem Code von Dir):

    VB.NET-Quellcode

    1. Option Strict On
    2. Module Module1
    3. Sub DoIT()
    4. Main.ListBox1.Items(Main.ListBox1.SelectedIndex) = Main.ListBox1.SelectedItem.ToString.Replace(Microsoft.VisualBasic.vbCrLf, Nothing)
    5. Microsoft.VisualBasic.MsgBox("Gewähltes Item: " + Main.ListBox1.SelectedItem.ToString)
    6. End Sub
    7. End Module


    Leider weiterhin ohne Erfolg. Gibts eigentlich eine Funktion, welche mir den Umbruch aus einem String raus nimmt? - Also dass ich nicht den Command gleich ausführe, sondern zuerst einen String zusammen baue, dort den Umbruch raus nehme und dann den String als Command nehme? Ich denke,Du weißt, was ich mein.

    Grüße!
    1. Poste mal bitte über [+ Erweitere Antwort] einen Screenshot eines Deiner line-Objekte, also sowas:



    sonst ist das Spekulatiusbacken ohne Ende hier.
    2.

    HeizungAuf5 schrieb:

    Das könnte schwierig werden, weil ich manche Funktionen einfach brauche, die mir Strict on raus wirft
    Da bin ich aber mal gespannt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    HeizungAuf5 schrieb:

    weil ich manche Funktionen einfach brauche, die mir Strict on raus wirft
    Welche?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wie es in Post#7 bereits geschrieben wurde.
    Das mit der Option Strict On-Geschichte ist aber noch offen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Bitte konkrete Beispiele. Außerdem: ListBox.Items sind vom Typ Object. .Contains(), .Replace() und Co sind aber (in diesem Fall) nur für Strings anwendbar. Warum? Weil es String-Funktionen sind! Daher muss ein ListBox-Item immer erst entweder in einen String gecastet werden oder dessen String-Repräsentation mittels .ToString() herbeigeholt werden, um .Contains und .Replace anzuwenden. Also ist das kein Argument gegen Option Strict On, sondern ein Argument dafür, dass da noch gewisses Verständnis für Datentypen fehlt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @HeizungAuf5 Das ist alles elementar einfach.
    Meist fehlt ein .ToString() oder eine entsprechende Konvertierung.
    Wenn ein Char erwartet wird, hängst Du einfach ein c dran: "A"c.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!