IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ne pas tenir compte des événements lors de l'événement Load


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut Ne pas tenir compte des événements lors de l'événement Load
    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 ?

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Il est clair que personnellement je n'apprécie pas non plus mener des actions sur des choses qui ne le nécessitent pas ......
    Mais dans le cas ou il s'agit de paramètres txt, xml, ini ...etc... tu gagneras davantage en lisibilité en enregistrant tous les paramètres d'un coups que de vouloir rechercher ceux qui nécessitent d'être sauvegardés uniquement !

    A voir ce qu'en pense les autres...

    A+

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    En lisibilité, je n'en doute pas.
    Mais il ne faudrait pas que ce soit au détriment de la perfo.
    Evidemment, dans mon cas précis, c'est sans doute anecdotique car je n'ai que 9 paramètres sur l'ensemble du form, mais si j'adopte cette philosophie partout, est-ce que cela restera anecdotique ? des millisecondes + des millisecondes...
    Puisque on est dans la philosophie, peut-être que l'algo que j'ai décrit qui permet de n'intervenir que sur les seuls (ou presque) paramètres modifiés est-il tout simplement plus coûteux en perfo que de tout sauvegarder ???

    EDIT : au fait wallace1, tu es rentré de vacances ?

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par noftal Voir le message
    Puisque on est dans la philosophie, peut-être que l'algo que j'ai décrit qui permet de n'intervenir que sur les seuls (ou presque) paramètres modifiés est-il tout simplement plus coûteux en perfo que de tout sauvegarder ???
    C'est effectivement là que je voulais en venir non pas que l'algo lui-même soit l'instigateur d'une dégradation de la perf mais il est clair qu'avec un nombre très réduit de paramètres (9 ça va), à mon humble avis le fait de chercher quel paramètre est éligible pour être sauvegardé pourrait faire pencher la balance en vue d'envisager l'enregistrement en masse.

    Cependant je te rejoint sur le fait que toutes ses petites choses mises bout à bout deviennent à termes très contraignantes, c'est pourquoi je te recommande de penser "optimisation" lorsque ton projet en sera aux phases de test Beta (pré-livraison). Tu auras ainsi une visu plus globales de ce qui fera l'objet de l'optimisation de ton code source.


    Citation Envoyé par noftal Voir le message
    EDIT : au fait wallace1, tu es rentré de vacances ?
    Ouep et lundi reprise du boulot... J'ai vraiment pas l'impression d'avoir rechargé les batteries é___è.... mais le principal c'est que les enfants étaient contents....

    ++

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    OK, merci du conseil.
    Je passe le sujet en Résolu, mais que cela n'empêche pas d'autres membres de partager leur avis ou leur expérience. Je les lirai avec plaisir.
    Pour ma part, je vais supprimer mon algo et faire de l'enregistrement de paramètres en masse, dans ce formulaire en tout cas.
    Bonne reprise lundi, wallace1.

  6. #6
    Membre expérimenté Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    peut être arriveras-tu à faire ce que tu souhaite en mettant ton code plutôt dans le constructeur du formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ne pas tenir compte des accent dans une requete
    Par prat038 dans le forum SQL
    Réponses: 8
    Dernier message: 07/09/2009, 13h34
  2. [MySQL] ne pas tenir compte des variables non utilisées pour éviter les bugs
    Par canary dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 26/03/2009, 08h46
  3. Réponses: 11
    Dernier message: 11/08/2007, 16h27
  4. [vba] ne pas tenir compte des majuscules/minuscules
    Par bungler dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/07/2007, 09h07
  5. Ne pas tenir compte des accents dans une requete
    Par zamanika dans le forum Installation
    Réponses: 8
    Dernier message: 08/11/2004, 19h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo