Combobox Auswahl (.ini-Dateien) in Textfelder auslesen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Shep.

    Combobox Auswahl (.ini-Dateien) in Textfelder auslesen

    Hallo zusammen.

    Da ich nach langem suchen noch nichts passendes zu meinem Problem gefunden habe, versuche ich es einfach mal hier.
    Ich habe auf Form1 eine Combobox1 erstellt, die sich mit Inhalte (.ini-Dateien) aus einem Ordner direkt im App.-Pfad. (Ordner1) füllt. Die .ini-Dateien haben folgende Struktur:

    [Person1]
    Name=Max
    Nachname=Mustermann
    Anschrift=Musterstr.
    Hausnr=12345
    usw...

    Jede .ini-Datei enthält nur Daten von einer Person. Klingt umständlich, soll aber so sein. Mein Problem ist nun, wenn ich aus der Combobox1 eine .ini-Datei auswähle, dass die Inhalte der Datei in die dafür vorgesehenen TextBox(Name, Nachname usw.) ausgelesen werden. Da die .ini-Dateien auch jederzeit unbenannt werden können oder neue direkt in den Ordner verschöben werden können Nützt mir mein Ansatz nicht viel wo ich einen festen Dateinamen in der If-Abfrage haben.

    VB.NET-Quellcode

    1. Private Sub ComboBox_Kontakt_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox_Kontakt.SelectedIndexChanged
    2. If ComboBox_Kontakt.SelectedItem = "max.ini" Then
    3. TextBox_Name.Text = GetIniSetting("Name", "Person")
    4. TextBox_Vorname.Text = GetIniSetting("Vorname", "Person")
    5. TextBox_Anschrift.Text = GetIniSetting("Anschrift", "Person")


    Es soll also, wenn ich eine Datei in der Combobox auswähle, erkannt werden welche Datei ich ausgewählt habe und mir dann die Werte in den jeweiligen TextBoxen auslesen.
    Ich würde mich sehr freuen wenn mir da evtl. jemand helfen könnte.
    Willkommen im Forum. :thumbup:
    Bist Du bereits in der Lage, eine INI-Datei als solche zu behandeln?
    Wenn nein: Such mal hier im Forum nach INI-Lib oder INI-Datei auslesen oder so.
    Wenn ja: Wo ist das Problem?
    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!
    Ja mit dem behandeln von INI-Dateien hab ich mich schon auseinander gesetzt auch mit Hilfe eines Beitrags. Das GetIniSetting sollte nur zur veranschaulichung dienen.
    Das Problem selbst ist nicht das auslesen einer INI-Datei, sondern viel mehr das die Combobox meine Auswahl erkennt, diesen als Wert speichert damit ich ihn später Auslesen kann.
    So was:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. ComboBox1.Items.Add("1")
    3. ComboBox1.Items.Add("2")
    4. ComboBox1.Items.Add("3")
    5. ComboBox1.Items.Add("4")
    6. ComboBox1.Items.Add("5")
    7. End Sub
    8. Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    9. Label1.Text = ComboBox1.SelectedItem.ToString
    10. End Sub
    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!

    Shep schrieb:

    sondern viel mehr das die Combobox meine Auswahl erkennt, diesen als Wert speichert damit ich ihn später Auslesen kann.

    Hat mit der ursprünglichen Fragestellung nix zu tun? WAS soll als "Wert" "gespeichert" werden? Und WO?

    Nehmen wir an, du liest die Pfade der ini Dateien ein und packst sie in die Combobox. Wenn sich das ausgewählte Item ändert, feuert ein Event. Anhand des Pfades kannst du dann die Datei auslesen und mit den Werten machen, was du willst. Wo GENAU ist jetzt das Problem?
    Ach, tut mir Leid ich habe mich wohl unklar ausgedrückt, bin noch blutiger Anfänger. Jedoch hat sich mein Problem nun geklärt als ich die Function zum lesen und schreiben von INI-Dateiein überarbeitet habe.

    Mein Problem war es, dass ich nicht direkt wusste wie ich definieren kann wenn sich ein Item in der Combobox ändert, dass dann direkt die jeweilige ini-Datei ausgelesen wird. Da in meinem INIFile Modul statt einer Variable für den INI-Pfad ein absoluter Pfad stand ("c:\ordner1\default.ini") ein überbleibsel bevor ich mehrere INI-Dateien verwenden wollte.

    Ich hab das jetzt mit der Combobox so geregelt:

    VB.NET-Quellcode

    1. Private Sub ComboBox_Kontakte_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox_Kontakte.SelectionChangeCommitted
    2. Dim Kontakte As String = ComboBox_Kontakte.SelectedItem
    3. TextBox_Name_.Text = GetINISetting(AppPath & Konrakte, "Person1", "Name")
    4. TextBox_Vorname_.Text = GetINISetting(AppPath & Konrakte, "Person1", "Vorname")
    5. TextBox_Anschrift_.Text = GetINISetting(AppPath & Konrakte, "Person1", "Anschrift")

    Trotzdem vielen Dank für die Mühe. :)