Speicherung von Listeneinträgen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    Speicherung von Listeneinträgen

    yo Leute,

    ich hab mal eine generelle Frage WIE man zB ComboBox-Einträge korrekt wegspeichert damit diese, bei erneutem Programmstart, wieder korrekt selektiert werden. (Sei es nun MySettings, DB oder sonst was)
    Angenommen in einer Combo sind 4 Items (Morgen, Mittag, Abend, Nacht). Item 2 (Mittag) ist ausgewählt und ich speichere diese Auswahl.

    Speichere ich mir da den Index?
    Oder gibt man den Items eine Art Identifier mit?

    Ich frage das auch im Bezug auf diesen Thread [VB 2008] Frage zu Design Entwurf bin aber der Meinung, dass ein eigener Thread angemessen ist, da es ja eine andere Thematik beschreibt.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Das sieht doch nach einer serialisierbaren Klasse mit einer String-List und einem Integer aus.
    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!
    Angenommen ich hab eine DB wo ich mehrere Einträge abspeichere. Ich nehme mal folgenden (sinnfreien...) Aufbau her:
    ID | Name | Tageszeit (Dies soll der Wert der Combobox sein. WAS sollte hier drin stehen?)
    1 | Der Name des ersten Eintrags | Morgens
    2 | Auch ein Eintrag | Abends
    3 | Und noch einer | Mittags

    So nun ruf ich aus dem Programm dein Eintrag mit der ID 2 auf und will, dass in der Combobox "Abends" ausgewählt wird.
    @RodFromGermany: Ich weiß zwar was serialiseren ist (nutze es auch) jedoch weiß ich nicht so recht, wie ich das in eine DB speichern soll.
    @faxe1008: Index fände ich nicht sehr gut. Was ist wenn eine neue "Tageszeit" hinzukommt oder ich diese nun alphabetisch sortiert haben möchte? So würde der falsche Eintrag ausgewählt werden.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    fichz schrieb:

    wie ich das in eine DB speichern soll.
    In Deinem 1. Post stand noch

    fichz schrieb:

    oder sonst was
    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 Ok. Wollte dadurch eigentlich erfahren, ob es eine allgemeine Möglichkeit gibt welche man in allen Arten von Datenspeicherung verwenden kann.
    Aber ja eigentlich ziele ich mehr auf eine Datenbank ab.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    fichz schrieb:

    ob es eine allgemeine Möglichkeit gibt welche man in allen Arten von Datenspeicherung verwenden kann.
    bin mir nicht sicher, was du mit allgemeine Möglichkeit meinst, aber wenn du die Selection einer Combo wiederherstellen willst, musste halt ihren SelectedIndex speichern.
    Du kannst den SelectedIndex auch direkt an eine Setting binden, das erspart Dir ein paar Zeilen Code beim Speichern. Ich glaub aber, der Designer bietet SelectedIndex nicht direkt zum binden an, hier musst Du dann manuell per Code das Binding festlegen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    habich mal probiert - mit SettingsBindings gehts nicht, muß man also so in die Settings schreiben

    VB.NET-Quellcode

    1. Public Class frmSelectMethod
    2. Private _Functions As FunctionEntry() = New FunctionEntry() { _
    3. New FunctionEntry("nop", AddressOf Nop), New FunctionEntry("Hallo", AddressOf Hallo), New FunctionEntry("Welt", AddressOf Welt), _
    4. New FunctionEntry("Wie gehts", Sub() MessageBox.Show("WieGehts?"))}
    5. Private Sub Nop()
    6. Media.SystemSounds.Asterisk.Play()
    7. End Sub
    8. Private Sub Hallo()
    9. MessageBox.Show("Hallo")
    10. End Sub
    11. Private Sub Welt()
    12. MessageBox.Show("Welt")
    13. End Sub
    14. Public Sub New()
    15. InitializeComponent()
    16. ComboBox1.DataSource = _Functions
    17. ComboBox1.DisplayMember = "Display"
    18. ComboBox1.SelectedIndex = My.Settings.SelectedIndex
    19. End Sub
    20. Private Sub AnyMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) _
    21. Handles TestToolStripMenuItem.Click
    22. Select Case True
    23. Case sender Is TestToolStripMenuItem
    24. _Functions(ComboBox1.SelectedIndex).Function.Invoke()
    25. End Select
    26. End Sub
    27. Private Sub frmSelectMethod_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
    28. My.Settings.SelectedIndex = ComboBox1.SelectedIndex
    29. End Sub
    30. End Class
    31. Public Class FunctionEntry
    32. Public Property Display As String
    33. Public Property [Function] As Action
    34. Public Sub New(Display As String, [Function] As Action)
    35. Me.Display = Display
    36. Me.Function = [Function]
    37. End Sub
    38. End Class


    Edit: sry, @SpaceyX: - korrekt ist: im Designer gehts nicht mit SettingsBindings - codeseitig gehts scheinbar doch.

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