My.setting.save ne sauve pas les system.collection.arraylist

cs_Jaxom Messages postés 29 Date d'inscription lundi 13 mai 2002 Statut Membre Dernière intervention 22 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-

1 réponse

Utilisateur anonyme
22 mars 2013 à 18:08
Bonjour,

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.
0
Rejoignez-nous