Speichern von zwei sachen

  • VB.NET

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

    Speichern von zwei sachen

    Hi Leute,

    Ich will mein Programm so schreiben das wenn der Benutzer eine datei über ein openfieldialog auswählt der name der datei in eine listbox angezeigt wird. Aber wenn der name angeklickt wird das der pfad von der ausgewählten datei abgerufen wird also das der auch iwie gespecihert wird

    thx

    Broker
    Du brauchst 2 Sachen:
    - eine Struktur zum Speichern der benötigten Daten (man könnte es auch ohne machen, aber so ist es "richtiger")
    - eine Liste mit den Strukturinstanzen

    Als erstes benötigst du die Struktur zum Speichern der Daten. Das kannst du dir so vorstellen, wie bei einem Kennzeichen. Das Kennzeichen ist der Schlüssel, alles was damit zu finden ist sind die Werte (Fahrzeug, Name, ect.)

    VB.NET-Quellcode

    1. Private Structure ListBoxFileInfo
    2. Public m_strPath As String
    3. Public m_strName As String
    4. End Structure


    Danach musst du die Daten ja irgendwo speichern. Das macht man am besten mit einer Liste, da diese beliebig lang sein kann und durch einen Index aufrufbar ist. Du musst auf System.Collections.Generic verweisen und diese Importieren.

    VB.NET-Quellcode

    1. Dim ListBoxFileInfos As List(Of ListBoxFileInfo) = New List(Of ListBoxFileInfo)


    Beim Aufruf des Dialogs musst du die Daten nun in beide Datenteile speichern. Stell dir das vor, als wenn du dein Kennzeichen auf das Nummernschild druckst und einmal in den PC eingibst, um später alle Daten zu finden.

    VB.NET-Quellcode

    1. If DeinDialogName.ShowDialog() == DialogResult.OK Then
    2. Dim NewFileInfo As ListBoxFileInfo = New ListBoxFileInfo
    3. NewFileInfo.m_strPath = DeinDialogName.FileName
    4. NewFileInfo.m_strName = "dein Name"
    5. ListBoxFileInfos.Add(NewFileInfo)
    6. DeineListBox.Items.Add("dein Name")
    7. End If


    Da wir die Liste und das ListView-Control _immer_ gleichzeitig befüllt haben, wissen wir, dass alle Einträge jeweils den gleichen Index haben. Das heißt, der Eintrag an Stelle 3 in der ListView ist auch der dazugehörige Pfad in der Liste an Stelle 3. Beim SelectedIndexChanged-Event kannst du so einfach alles auslesen:

    VB.NET-Quellcode

    1. Private Sub DeinListView_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeinListView.SelectedIndexChanged
    2. ' Prüfen dass auch wirklich ein Element ausgewählt ist
    3. If DeinListView.SelectedIndex <> -1 Then
    4. Dim CurrentFileInfo As ListBoxFileInfo = ListBoxFileInfos(DeinListView.SelectedIndex)
    5. ' CurrentFileInfo.m_strPath ist nun der Dateipfad
    6. ' CurrentFileInfo.m_strName ist nun der Name
    7. End If
    8. End Sub


    Ich hoffe du hast das ganze so verstanden. Wenn nicht, suche dir bitte ein Buch und lese es. Sonst kommst du einfach nicht darum herum.

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Hi
    Ich muss mich doch noch mal dazu hinreißen lassen. Programmieren ist nicht 1+1 sondern das was Chrisber oben gemacht hat! Programmieren ist auch nicht das zusammenkopieren von Sourcecodes die man im Internet findet oder dort nachfragt, durch dekompilieren oder Ähnliches erhält, sondern eigenständiges Denken, das größtenteils auf Logik beruht. Wer das nicht versteht/verstehen will hat nichts in dem Gebiet zu suchen. Als Programmierer verwendet häufig nicht mal Libraries aus dem Internet sondern schaut sich die Spezifikationen von Dateitypen an, überlegt sich wie er eigene Dateitypen erschaffen könnte usw. usw. usw.. DAS ist Programmieren: Weiterdenken, logisch denken und wissen. Zum Letzteren gehört selbstverständlich lernen. Wer nicht lernen will, soll von mir aus bei der Bahn (nix für ungut) anfangen oder sonst wo, aber der hat nichts in der Programmierbranche zu suchen.

    Gruß
    ~blaze~