Frohe Weihnachten,
um Zeit zu sparen wollte ich beim Programmstart den letzten Zuatand der Listview und der dazugehörigen Imagelist abspeichern. Klappt auch mit Serilisieren und Deserilisieren ganz gut, nur scheint es ein Problem zu geben, das du ImageKeys verloren gehen.
ListView:
1. Variante Imagelist
2. Variante Imagelist
Bei zweiten erscheinen keinen Bilder und bei ersteren "verrutschen" diese immer.
Hat jeman damit Erfahrungen bzw. sieht den Knackpunkt?
um Zeit zu sparen wollte ich beim Programmstart den letzten Zuatand der Listview und der dazugehörigen Imagelist abspeichern. Klappt auch mit Serilisieren und Deserilisieren ganz gut, nur scheint es ein Problem zu geben, das du ImageKeys verloren gehen.
ListView:
VB.NET-Quellcode
- Public Sub SerializeListView(ByVal path As String, ByRef lv As ListView)
- Dim f As New IO.FileStream(path, IO.FileMode.Create)
- Dim bf As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- Dim l(lv.Items.Count - 1) As ListViewItem
- lv.Items.CopyTo(l, 0)
- bf.Serialize(f, l)
- f.Close()
- End Sub
- Public Sub DeserializeListView(ByVal path As String, ByRef lv As ListView)
- Dim f As New IO.FileStream(path, IO.FileMode.Open)
- Dim bf As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- lv.Items.Clear()
- lv.Items.AddRange(bf.Deserialize(f))
- f.Close()
- For Each i As ListViewItem In lv.Items
- i.Name = i.ImageKey
- 'i.ImageKey = "default"
- Next
- End Sub
1. Variante Imagelist
VB.NET-Quellcode
- <Serializable()> Public Class clsBildliste
- Public Key As ArrayList
- Public Image As ArrayList
- End Class
- Public Sub SerializeImageList3(ByVal path As String, ByRef il As ImageList)
- Dim f As New IO.FileStream(path, IO.FileMode.Create)
- Dim bf As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- Dim n As Integer
- Dim m As Integer
- Dim img As New clsBildliste
- img.Key = New ArrayList
- img.Image = New ArrayList
- For n = 0 To il.Images.Count - 1
- img.Key.Add(il.Images.Keys(n))
- m = il.Images.IndexOfKey(il.Images.Keys(n))
- img.Image.Add(il.Images.Item(m))
- Next
- bf.Serialize(f, img)
- f.Close()
- End Sub
- Public Sub DeserializeImageList3(ByVal path As String, ByRef il As ImageList)
- Dim fs As New FileStream(path, FileMode.Open)
- Dim bf As New BinaryFormatter()
- Dim img As New clsBildliste
- img = bf.Deserialize(fs)
- Dim n As Integer
- For n = 0 To img.Image.Count - 1
- il.Images.Add(img.Key(n + 1), img.Image(n))
- Next
- fs.Close()
- End Sub
2. Variante Imagelist
VB.NET-Quellcode
- Public Sub SerializeImageList(ByVal path As String, ByRef il As ImageList)
- Dim f As New IO.FileStream(path, IO.FileMode.Create)
- Dim bf As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- bf.Serialize(f, il.ImageStream)
- f.Close()
- End Sub
- Public Sub DeserializeImageList(ByVal path As String, ByRef il As ImageList, ByRef lv As ListView) 'obwohl key's matchen wird nicht zugeordnet..
- Dim fs As New FileStream(path, FileMode.Open)
- Dim bf As New BinaryFormatter()
- il.ImageStream = bf.Deserialize(fs)
- Dim n As Integer
- For n = 0 To lv.Items.Count - 1
- il.Images.SetKeyName(n, lv.Items.Item(n).ImageKey)
- Next
- fs.Close()
- End Sub
Bei zweiten erscheinen keinen Bilder und bei ersteren "verrutschen" diese immer.
Hat jeman damit Erfahrungen bzw. sieht den Knackpunkt?