My.setting.save ne sauve pas les system.collection.arraylist
cs_Jaxom
Messages postés29Date d'inscriptionlundi 13 mai 2002StatutMembreDernière intervention22 mars 2013
-
22 mars 2013 à 14:40
Utilisateur anonyme -
22 mars 2013 à 18:08
Bonjour,
Je voudrais sauver la position et la taille de tous les forms de mon application.
J'ai donc créeé le code ci-dessous
Au chargement de la page, j'exécute PhM_MeP_FormPosition_LOAD(me) qui récupère la position du formulaire
et à la fermeture j'éxécute Sub PhM_MeP_FormPosition_SAVE(me)
tout va bien pendant l'exécution, en mémoire, j'ai bien le tableau (My.Settings.NewformPosition) qui gonfle sauf que le my.settings.save ne sauve rien du tout si je relance l'appli, My.Settings.NewformPosition = nothing de nouveau.
Quelqu'un à une idée?
Merci d'avance
Public Structure STRUCT_TaillePosFenetre
Dim Name As String
Dim PosX As Int32
Dim PosY As Int32
Dim Height As Int32
Dim Width As Int32
Dim WindowState As FormWindowState
End Structure
'Positionne la fenetre en cours
Public Sub PhM_MeP_FormPosition_LOAD(ByRef MaForm As Windows.Forms.Form)
Try
For Each Element As STRUCT_TaillePosFenetre In My.Settings.NewformPosition
If MaForm.Name = Element.Name Then
'Trouvé, on applique les paramètres
MaForm.WindowState = Element.WindowState
MaForm.Location = New Point(Element.PosX, Element.PosY)
MaForm.Height = Element.Height
MaForm.Width = Element.Width
Exit For
End If
Next
Catch ex As NullReferenceException
'Si c'est null on sauve pour la premiere fois et ce n'est pas vraiment une erreur donc
PhM_MeP_FormPosition_SAVE(MaForm)
Catch ex As Exception
'Si on est ici, c'est que c'est un autre problème, ca c'est une vraie erreur
LOG.AddErrorLog("Mod_MiseEnPage - PhM_MeP_FormPosition_LOAD", ex.Message)
End Try
End Sub
'Sauve la position en cours
Public Sub PhM_MeP_FormPosition_SAVE(MaForm As Windows.Forms.Form)
If IsNothing(My.Settings.NewformPosition) Then
My.Settings.NewformPosition = New System.Collections.ArrayList
My.Settings.Save()
End If
Dim pos As Int32 = -1
Try
For i As Int32 = 0 To My.Settings.NewformPosition.Count - 1
If MaForm.Name = My.Settings.NewformPosition(i) Then
pos = i
Exit For
End If
Next
Catch ex As Exception
LOG.AddErrorLog("Mod_MiseEnPage - PhM_MeP_FormPosition_SAVE", ex.Message)
Dim i As Int32 = 0
End Try
If pos = -1 Then 'pas trouvé
Dim Elem As New STRUCT_TaillePosFenetre
Elem.Name = MaForm.Name
Elem.WindowState = MaForm.WindowState
Elem.Height = MaForm.Height
Elem.Width = MaForm.Width
Elem.PosX = MaForm.Location.X
Elem.PosY = MaForm.Location.Y
My.Settings.NewformPosition.Add(Elem)
Else
With My.Settings.NewformPosition(pos)
.Name = MaForm.Name
.WindowState = MaForm.WindowState
.Height = MaForm.Height
.Width = MaForm.Width
.PosX = MaForm.Location.X
.PosY = MaForm.Location.Y
End With
End If
My.Settings.Save()
End Sub
-Perdu dans les méandres de la création virtuelle-
My.settings sauve les paramètres un à la fois. Il faut appeler my.settings autant de fois que nécessaire à la sauvegarde et les récupérer un à la fois au lancement.