Bonjour,

J'ai un formulaire Préférences qui me permet de définir des paramètres de l'appli.
Il est constitué d'onglets et un bouton OK commun à tout le formulaire permet de valider les modifications effectuées.
Lors de l'événement Load, je charge les paramètres déjà enregistrés par l'utilisateur.
Une variable IsTabChanged globale booléenne modifiée sur l'événement CheckedChanged de chaque paramètre, m'indique si l'utilisateur a changé des paramètres
L'événement OK.click consulte la valeur de chaque IsTabChanged et si elle est à true, j'enregistre les seuls paramètres concernés par ce tab.
Le but est de ne pas enregistrer tous les paramètres si juste un onglet a été modifié (remarque, je nevais pas jusqu'à identifier les seuls paramètres modifiés du formulaire, je m'arrête à la maille de l'onglet).
Voici le code (extrait pour un seul paramètre de l'onglet Backup) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    Private BackupSettingChanged As Boolean = False
 
 
 Private Sub Form_Pref_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Chargement des paramètres utilisateur dans le form
 
            Dim xcfg As New Xmlconfig(XMLfullpath, False)
 
            ' Sauvegarde
            Me.TXT_Path.Text = xcfg.Settings("Backup")("BackupPath").Value
End Sub
 
 
 Private Sub BackupFieldsChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles TXT_Path.TextChanged, _
                NUM_BackupFrequency.ValueChanged, _
                NUM_BackupMaxOldness.ValueChanged
        BackupSettingChanged = True
 
    End Sub
 
  Private Sub BT_Valider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_Valider.Click
 
            Dim xcfg As New Xmlconfig(XMLfullpath, False)
 
            ' Sauvegarde
            If BackupSettingChanged Then
                     xcfg.Settings("Backup")("BackupPath").Value = Me.TXT_Path.Text
            EndIf
            xcfg.Save(XMLfullpath)
            BackupSettingChanged = False
            Me.DialogResult = System.Windows.Forms.DialogResult.OK
End Sub
Le pb est que ce souci d'optimisation est vain car l'événement TextChanged est appelé dans l'événement Load à la ligne 10 (si la valeur chargée est différente de la valeur par défaut du design).

y a-t-il une autre façon de régler le pb que de mettre en début de Load des RemoveHandler et de mettre en fin de Load des AddHandler (1 par paramètre contenu dans le form) ?
Peut-être allez-vous me dire que ma recherche d'optimisation est sans intérêt, et que ce ne sera pas plus pénalisant pour la performance de l'appli d'enregistrer tous les paramètres du formulaire lorsque l'utilisateur clique sur OK, que les paramètres aient été modifiés ou non ?