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) :
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).
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
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 ?
Partager