Hallo
Hier habe ich einen code gefunden: vbarchiv.net/tipps/tipp_2081-linq-to-listview.html#;
die den Inhalt des ListViews und zusätzlich die ColumnHeader Informationen in eine XML Datei speichert und auch wieder auslesen kann.
Die nachfolgende Klasse erbt von ListView und wird dabei um die Load und Save Methode erweitert. Die neuen Methoden nutzen dabei die LINQ to XML Technik. Doch nicht nur die Daten werden als XML gespeichert, sondern zusätzlich noch die ColumnHeader Informationen, so dass ein ListView komplett wiederhergestellt werden kann.
Nachfolgend die Klasse ListViewEx:
Fügen Sie Ihrem Projekt eine neue Klasse hinzu, und kopieren den Code in das Klassenmodul. Erstellen Sie einmal das Projekt, um so die Komponente zu erzeugen. VB.Net stellt die neue Komponente automatisch in die ToolBox oben ein. Sie können jetzt die so neu erzeugte Komponente auf Ihre Form ziehen und damit wie gewohnt arbeiten.
Es funktioniert bei mir nicht, was mach ich falsch ???
Hier habe ich einen code gefunden: vbarchiv.net/tipps/tipp_2081-linq-to-listview.html#;
die den Inhalt des ListViews und zusätzlich die ColumnHeader Informationen in eine XML Datei speichert und auch wieder auslesen kann.
Die nachfolgende Klasse erbt von ListView und wird dabei um die Load und Save Methode erweitert. Die neuen Methoden nutzen dabei die LINQ to XML Technik. Doch nicht nur die Daten werden als XML gespeichert, sondern zusätzlich noch die ColumnHeader Informationen, so dass ein ListView komplett wiederhergestellt werden kann.
Nachfolgend die Klasse ListViewEx:
Fügen Sie Ihrem Projekt eine neue Klasse hinzu, und kopieren den Code in das Klassenmodul. Erstellen Sie einmal das Projekt, um so die Komponente zu erzeugen. VB.Net stellt die neue Komponente automatisch in die ToolBox oben ein. Sie können jetzt die so neu erzeugte Komponente auf Ihre Form ziehen und damit wie gewohnt arbeiten.
VB.NET-Quellcode
- Imports System.Windows.Forms.ListViewItem
- Public Class ListViewEx
- Inherits Windows.Forms.ListView Public Sub Save(ByVal FileName As String)
- Try
- Dim xDoc As New XDocument()
- With xDoc
- .Declaration = New XDeclaration("1.0", "", "")
- .Add(New XElement("ListView"))
- ' ColumnHeader in das XML-Dokument einfügen
- .Root.Add(From col As ColumnHeader In Me.Columns _
- Select <ColumnHeader>
- <Text><%= col.Text %></Text>
- <Name><%= col.Name %></Name>
- <DisplayIndex><%= col.DisplayIndex %></DisplayIndex>
- <Width><%= col.Width %></Width>
- </ColumnHeader>)
- ' Items in das XML-Dokument einfügen
- .Root.Add(From Item As ListViewItem In Me.Items _
- Select <Item>
- <%= From SubItem As ListViewSubItem In Item.SubItems _
- Select <Text><%= SubItem.Text %></Text> %>
- </Item>)
- ' XML-Datei speichern
- .Save(FileName)
- End With
- Catch ex As Exception
- Throw ex
- End Try
- End Sub Public Sub Load(ByVal FileName As String)
- Try
- Me.Items.Clear()
- Me.Columns.Clear()
- Me.BeginUpdate()
- ' XML-Datei einlesen
- Dim xListView = XElement.Load(FileName)
- ' ColumnHeader aus XML erstellen
- Me.Columns.AddRange((From col In xListView.Descendants("ColumnHeader") _
- Select New ColumnHeader With { _
- .Text = col.Element("Text"), _
- .Name = col.Element("Name"), _
- .DisplayIndex = CInt(col.Element("DisplayIndex")), _
- .Width = CInt(col.Element("Width"))}).ToArray)
- ' Items aus XML einlesen und dem ListView hinzufügen
- For Each Item In xListView.Descendants("Item")
- Me.Items.Add(New ListViewItem(( _
- From SubItem In Item.Descendants("Text") _
- Select SubItem.Value).ToArray))
- Next
- Catch ex As Exception
- Throw ex
- Finally
- Me.EndUpdate()
- End Try
- End SubEnd Class
Es funktioniert bei mir nicht, was mach ich falsch ???