vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: CheckedListBox checked Items speichern 
Autor: ModeratorDaveS (Moderator)
Datum: 14.09.11 14:31

Es ist keine sehr flexible Art zu programmieren wenn alle Werte explizit im Programmcode vorhanden sind. Du willst das Programm nicht umwandeln wenn etwa "Element 4" dazu kommt, oder?

Daher könntest du vielleicht besser eine Liste der Werte bereitstellen, und pro Liste eine Unterliste haben für die CheckBoxList Einträge (vielleicht kommt auch mal "Element 1.4"). Die Elemente solcher Listen kannst du als kleine Klassenobjekte definieren. Ein XmlSerializer kann dann die ganze Struktur speichern und wieder einlesen.

So die Theorie, hier ist ein Beispiel. Vielleicht begreifst du am Anfang nicht alles, aber weitere Fragen kannst du ruhig stellen.
Public Class Form1
 
    Public Class ListItem
        Public Property Name As String
        Public Property SubItems As New List(Of SubItem)
 
        Public Sub New()
        End Sub
 
        Public Sub New(ByVal name As String, ByVal subItems As List(Of SubItem))
            Me.Name = name
            Me.SubItems.AddRange(subItems)
        End Sub
    End Class
 
    Public Class SubItem
        Public Property Name As String
        Public Property Selected As Boolean
 
        Public Sub New()
        End Sub
 
        Public Sub New(ByVal name As String)
            Me.Name = name
        End Sub
 
        Public Sub New(ByVal name As String, ByVal selected As Boolean)
            Me.Name = name
            Me.Selected = selected
        End Sub
 
        Public Overrides Function ToString() As String
            Return Name
        End Function
    End Class
 
    Public path As String = "C:\Test\clb.xml"
    Public Items As List(Of ListItem)
 
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim xs As New Xml.Serialization.XmlSerializer(Items.GetType())
        Using strm As IO.Stream = IO.File.OpenWrite(path)
            xs.Serialize(strm, Items)
        End Using
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        If IO.File.Exists(path) Then
            Dim xs As New Xml.Serialization.XmlSerializer(GetType(List(Of _
              ListItem)))
            Using strm As IO.Stream = IO.File.OpenRead(path)
                Items = CType(xs.Deserialize(strm), List(Of ListItem))
            End Using
        Else
            Items = New List(Of ListItem)
            Dim sis As New List(Of SubItem)
            sis.AddRange({New SubItem("Element 1.1"), New SubItem("Element" & _
              "1.2"), New SubItem("Element 1.3")})
            Dim li As New ListItem("Element 1", sis)
            Items.Add(li)
 
            sis.Clear()
            sis.AddRange({New SubItem("Element 2.1"), New SubItem("Element" & _
              "2.2"), New SubItem("Element 2.3")})
            li = New ListItem("Element 2", sis)
            Items.Add(li)
        End If
 
        ListBox1.DataSource = Items
        ListBox1.DisplayMember = "Name"
    End Sub
 
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e _
      As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        CheckedListBox1.Items.Clear()
        Dim pos As Integer
        For Each si As SubItem In CType(ListBox1.SelectedItem, _
          ListItem).SubItems
            CheckedListBox1.Items.Add(si)
            CheckedListBox1.SetItemChecked(pos, si.Selected)
            pos += 1
        Next
    End Sub
 
    Private Sub CheckedListBox1_ItemCheck(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck
        If CheckedListBox1.SelectedItem Is Nothing Then Return
        CType(CheckedListBox1.SelectedItem, SubItem).Selected = e.NewValue
    End Sub
End Class

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
CheckedListBox checked Items speichern1.960maddus13.09.11 16:34
Re: CheckedListBox checked Items speichern1.555ModeratorDaveS14.09.11 14:31
Re: CheckedListBox checked Items speichern1.300maddus14.09.11 16:07
Re: CheckedListBox checked Items speichern1.279maddus16.09.11 14:25
Re: CheckedListBox checked Items speichern1.558ModeratorDaveS16.09.11 14:39
Re: CheckedListBox checked Items speichern1.251maddus16.09.11 14:56

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel