Listbox ist mit Textdateien befüllt und diese anklicken und mit Doppelklick in bestimmter Textbox öffnen? Geht das?

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von joha2017.

    Listbox ist mit Textdateien befüllt und diese anklicken und mit Doppelklick in bestimmter Textbox öffnen? Geht das?

    Hallo Leute, ich hab das Problem, ich nutze VB Basic 2010 Express und habe eine Form auf der ich eine Listbox1 und eine Textbox1 habe. Die Listbox1 fülle ich mit Dateien aus einem Ordner, diese werden dort auch sauber aufgelistet. Meine Frage ist jetzt, ob es möglich ist mit Doppelklick auf ein ausgewähltes Item in der Listbox, die zugehörige Datei(Textdatei - .txt) in einer bestimmten Textbox1 zu öffnen - in diesem Fall Textbox1 zu öffnen? Ich habe an sich alles. Aber ich bekomme es irgendwie nicht hin, die Datei in meiner Textbox1 zu öffnen, sondern es öffnet sich bei Doppelklick auf das Item, die Datei, aber in einem frei schwebendem Texteditor der nicht zum Programm gehört. Der Code in (Private Sub ListBox1_DoubleClick(sender As System.Object, e As System.EventArgs) Handles ListBox1. DoubleClick) öffnet die Datei zwar, wie gesagt, aber eben nicht in meiner Textbox1? Geht das überhaupt, die Datei in die Textbox1 geöffnet zu bekommen? Ich hoffe, ich konnte mich verständlich ausdrücken. Was ich bislang versucht habe. Google, Youtube, Vbnet Foren aller Art. Dort gibt es zwar Vorschläge, die aber alle nur Fehlermeldungen produzieren? Hat jemand vielleicht eine Idee, in welche Richtung ich gehen könnte? Oder eventuell sogar einen Code Schnipsel, der vielleicht weiterhelfen könnte. Vielen lieben Dank im Voraus und einen angenehmen Abend wünsche ich allen. Es soll ein Lernprogramm werden, wo ich Dateien, die ich für meine Umschulung benötige, durch Klick auf die Liste in einer Textbox öffnen kann und so effektiver lernen kann.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Public Class Form1
    4. Public Sub New()
    5. InitializeComponent()
    6. ListBox1.DataSource = New DirectoryInfo("Pfad zu Ordner").GetFiles()
    7. ListBox1.DisplayMember = ""
    8. End Sub
    9. Private Sub ListBox1_DoubleClick(sender As System.Object, e As System.EventArgs) Handles ListBox1.DoubleClick
    10. If Not ListBox1.SelectedItem Is Nothing Then
    11. Dim fI As FileInfo = DirectCast(ListBox1.SelectedItem, FileInfo)
    12. Process.Start(fI.FullName)
    13. End If
    14. End Sub


    Thema verschoben; Das Thema wird automatisch dort erstellt, wo man sich befindet, wenn man auf [* Neues Thema] klickt. ~VaporiZed

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VaporiZed“ ()

    Naja, Process.Start öffnet eben die angegebene Datei mit dem Default-Programm für die entsprechende Dateiextension. Bei HTML-Dateien ist es ein WebBrowser, bei MP3-Dateien wohl ein Musikprogramm. Dir fehlt beim Dateiöffnen der Zusammenhang zur TextBox. Was willst Du in der TextBox anzeigen lassen? Wenn es plain text ist, lies die Datei mit IO.File.ReadAllText aus und schreib das in die TextBox.
    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.
    Hallo VaporiZed,

    ich hab schon lange keine Frage mehr gestellt, daher vielleicht mein Anwendungsfehler mit der falschen Postionierung, danke daher doppelt für deine Hinweise.

    Danke für deinen Tipp, ja im Prinzip ist das mein Problem.

    Wie stelle ich den Zusammenhang zwischen Textbox1 und Process.Start her. Ich bin leider nicht wirklich der Profi. Zit. Was willst Du in der TextBox anzeigen lassen? Wenn es plain text ist, lies die Datei mit IO.File.ReadAllText aus und schreib das in die TextBox. Zit. Ende; - Du hast es genau erkannt, es ist reiner text, also plain text, das ist schon mal ein Hinweis, der mir vielleicht weiterhelfen kann. Vielen lieben Dank.
    Ich fasse meinen Post nochmal zusammen
    Die Process.Start-Zeile löschen, dafür die IO.File.ReadAllText-Zeile rein. Fertig.
    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.
    Hi,

    hab ich gemacht, jetzt kommt aber diese Fehlermeldung: Fehler bei der Überladungsauflösung, da keine zugreifbare "ReadAllText" diese Anzahl von Argumenten akzeptiert.
    Ich hoffe, ich nerve jetzt nicht, sorry? Ich glaube, irgendwas entgeht mir da noch?




    VB.NET-Quellcode

    1. Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    2. If Not ListBox1.SelectedItem Is Nothing Then
    3. If Not ListBox1.SelectedItem Is Nothing Then
    4. Dim fI As FileInfo = DirectCast(ListBox1.SelectedItem, FileInfo)
    5. IO.File.ReadAllText()
    6. End If
    7. End If
    8. End Sub

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „joha2017“ ()

    @joha2017 Bei Microsoft findest du zu den Methoden immer Beispielcode.

    IO.File.ReadAllText() will noch wissen, welche Datei zu lesen ist. Der Rückgabewert der Methode ist dann der Dateiinhalt, welcher an eine Textbox übergeben werden kann.

    docs.microsoft.com/de-de/dotne….readalltext?view=net-5.0
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Sicher (=geprüf) das der Pfad korrekt ist? Setze einen Haltepunkt und schau zur Laufzeit ob der Wert korrekt ist.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Kurzes Update, mit einer einzelnen direkt angesprochen Datei funktioniert das jetzt prima, aber auch nur dann? Ich werds wie gesagt weiter versuchen,

    Problem ist jetzt nur, dass ich aus der Listbox nur die im Pfad genannte Datei - hier also Auflassung.txt in Textbox1 öffnen kann, an die Dateien im Gesamtordner (Lernkarten 4\texte ) komme ich noch nicht dran, aber immerhin.

    ihr habt mir schon mal weitergeholfen. Danke euch.



    VB.NET-Quellcode

    1. Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
    2. If Not ListBox1.SelectedItem Is Nothing Then
    3. Dim fI As FileInfo = DirectCast(ListBox1.SelectedItem, FileInfo)
    4. TextBox1.Text = IO.File.ReadAllText("C:\Users\joach\Desktop\VB2010 Projekte\Lernkarten 4\texte\Auflassung.txt")
    5. End If
    6. End Sub

    Vielen Lieben Dank für den Tipp und ein angenehmes Wochenende wünsche ich, Erfinder des Rades.
    jetzt funzt es perfekt. Leut Ihr seid spitze, danke noch mal an alle.

    ich packe den kompletten Code noch mal mit rein, falls jemand anderes das Problem haben sollte. Falls ein Anfänger darunter ist
    Me.Close beendet einfach das Programm.

    Das Problem ist jetzt gelöst, leider weiß ich nicht, wie man das hier im Forum auf gelöst setzen kann?

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Public Class Form1
    4. 'Dieser Abschnitt befüllt die Listbox/Combobox mit den im Ordner verfügbaren Dateien
    5. Public Sub New()
    6. InitializeComponent()
    7. ListBox1.DataSource = New DirectoryInfo("C:\Users\joach\Desktop\VB2010 Projekte\Lernkarten 4\texte").GetFiles()
    8. ListBox1.DisplayMember = ""
    9. End Sub
    10. ' Hier wird die Datei angeklickt und in der ausgewählten Textbox in diesem Fall Textbox1 geöffnet
    11. Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
    12. TextBox1.Clear() 'leert die Textbox nach vor jedem neuen Aufruf einer Datei
    13. If Not ListBox1.SelectedItem Is Nothing Then
    14. Dim fI As FileInfo = DirectCast(ListBox1.SelectedItem, FileInfo)
    15. 'TextBox1.Text = IO.File.ReadAllText("C:\Users\joach\Desktop\VB2010 Projekte\Lernkarten 4\texte\auflassung.txt") / Diese Lösung geht bei einzelnen Dateien
    16. TextBox1.Text = IO.File.ReadAllText(fI.FullName) ' diese Codezeile gibt den gesamten Ordner frei.
    17. End If
    18. End Sub
    19. 'beendet das Programm// bezw. schließt das Fenster
    20. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    21. Me.Close()
    22. End Sub
    23. End Class

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „joha2017“ ()