Vu que les Fichiers Ini sont petit à petit oublié et que la base de registre ne répond pas toujours à nos attentes (récupération facile des paramètres d'une application), pourquoi ne pas utiliser les fichiers XML comme base de sauvegarde des paramètres ...
Voici donc un exemple qui sauvegarde le contenu d'une ListView et quelque paramètre dans un fichier XML.
Source / Exemple :
' à coller dans un fichier de type module de code
'
' ©2002 Icem@n
Imports System
Imports System.IO
Imports System.Xml
Module modSettingXML
#Region " SettingsReader + SettingsWriter "
Public Sub SaveSettings(ByVal lvwForSave As ListView, ByVal strFileName As String)
Try
Dim doc As New System.Xml.XmlDataDocument()
' crée une table de settings "Générale" qui ne contiendras qu'un record ...
doc.DataSet.Tables.Add("Settings")
doc.DataSet.Tables("Settings").Columns.Add("Program", System.Type.GetType("System.String"))
doc.DataSet.Tables("Settings").Columns.Add("Version", System.Type.GetType("System.String"))
' ajout du record contenant les Settings "Générale"
Dim objaNewRow(1) As Object
objaNewRow(0) = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString()
objaNewRow(1) = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
doc.DataSet.Tables("Settings").Rows.Add(objaNewRow)
' Crée la table pour sauvegarder le contenu de ma ListView
doc.DataSet.Tables.Add("ProcessLst")
doc.DataSet.Tables("ProcessLst").Columns.Add("Checked", System.Type.GetType("System.Boolean"))
doc.DataSet.Tables("ProcessLst").Columns.Add("FromText", System.Type.GetType("System.String"))
doc.DataSet.Tables("ProcessLst").Columns.Add("FromBegin", System.Type.GetType("System.String"))
doc.DataSet.Tables("ProcessLst").Columns.Add("FromEnd", System.Type.GetType("System.String"))
doc.DataSet.Tables("ProcessLst").Columns.Add("ToText", System.Type.GetType("System.String"))
' Sauvegarde chaque ligne de ma ListView
Dim itmItem As ListViewItem
Dim objaNewData(4) As Object
For Each itmItem In lvwForSave.Items
objaNewData(0) = itmItem.Checked
objaNewData(1) = itmItem.Text
objaNewData(2) = itmItem.SubItems(1).Text
objaNewData(3) = itmItem.SubItems(2).Text
objaNewData(4) = itmItem.SubItems(3).Text
doc.DataSet.Tables("ProcessLst").Rows.Add(objaNewData)
Next
' Ecrit le Fichier XML
doc.DataSet.WriteXml(strFileName)
Catch e As Exception
MsgBox(e.ToString)
End Try
End Sub
Public Sub LoadSettings(ByVal lvwForSave As ListView, ByVal strFileName As String)
Dim doc As New System.Xml.XmlDataDocument()
' Lits le fichier de Settings
Try
doc.DataSet.ReadXml(strFileName)
Catch e As Exception
MsgBox(e.ToString)
Exit Sub
End Try
' Verifie que la Table Settings Existes
If doc.DataSet.Tables.Contains("Settings") Then
Try
' récupère les settings Générales
' Inutile mais pour voir comment on doit faire
Dim strPgm As String
Dim strVersion As String
strPgm = doc.DataSet.Tables("Settings").Rows(0).Item("Program")
strVersion = doc.DataSet.Tables("Settings").Rows(0).Item("Version")
Catch e As Exception
MsgBox(e.ToString)
End Try
End If
' Verifie que la Table ProcessLst Existes
If doc.DataSet.Tables.Contains("ProcessLst") Then
Try
' récupère les ligne de la ListView
Dim lstItem As ListViewItem
Dim rowEach As DataRow
For Each rowEach In doc.DataSet.Tables("ProcessLst").Rows
lstItem = New ListViewItem()
lstItem.Checked = rowEach("Checked")
lstItem.Text = rowEach("FromText")
lstItem.SubItems.Add(rowEach("FromBegin"))
lstItem.SubItems.Add(rowEach("FromEnd"))
lstItem.SubItems.Add(rowEach("ToText"))
lvwForSave.Items.Add(lstItem)
lstItem = Nothing
Next
Catch e As Exception
MsgBox(e.ToString)
End Try
End If
End Sub
#End Region
End Module
Conclusion :
Nouvelle Version :
+ de commentaires.
et gestions des erreurs.
n'hésité pas à laisser vos commentaires et idées ...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.