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

C# Discussion :

comment savoir si une variable change de valeur


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut comment savoir si une variable change de valeur
    Bonjour,

    D'après mon titre le problème peut sembler simple, mais ça ne l'est pas tout à fait (enfin pour moi ).

    Je voudrais déjà savoir comment l'on peut savoir (par programmation) si une variable change de valeur.

    J'ai déjà trouvé quelques commencements de réponse mais je n'arrive pas à les utiliser...

    (celui-ci me semble être le plus clair, mais je n'ai pas réussi à l'appliquer/l'utiliser...)

    Comment puis-je faire pour utiliser cette fonction/abonnement afin de dire 'cette variable à changer de valeur donc il faut faire ça', s'il vous plaît ?

    Je sais que c'est un truc tout bête mais pour l'instant je n'ai pas encore réussi à mettre le doigt dessus...

    En vous remerciant.

  2. #2
    Invité
    Invité(e)
    Par défaut

    Je suppose que tu veux dire une propriété parce que dans le cas d'un champ ou d'une variable locale à une fonction alors c'est impossible et pour le dernier cas ça n'a aucun intérêt.

    Dans le premier lien que tu as fourni une solution simple t'est donnée à condition que tu disposes d'une Propriété. La solution fournie est identique à celle fournie par l'interface INotifyPropertyChanged. Tu verras un exemple d'implémentation sur le site MSDN ici.

  3. #3
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Bonjour,

    Merci de m'avoir répondu.

    Cependant je n'arrive pas à comprendre comment cela fonctionne.

    N'y a-t-il pas une fonction booléenne qui permettrait de dire si la valeur à changer alors la fonction renverrait true, et sinon false ?

    Je dois faire assez simple car c'est un projet déjà existant et l'on est plusieurs à travailler dessus....

    Car là je dois avouer que je m'y perds un peu...

    Il faut juste que j'arrive à voir si la valeur de la variable ID change ou pas et si oui qu'il fasse une action.

    Est-ce possible, pouvez-vous m'expliquer s'il vous plaît ?

    En vous remerciant.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lou87 Voir le message
    N'y a-t-il pas une fonction booléenne qui permettrait de dire si la valeur à changer alors la fonction renverrait true, et sinon false ?
    Non

    Citation Envoyé par lou87 Voir le message
    Déjà je ne peux pas changer le type de la class... Celui du projet est AdminUserControl et je ne peux pas le changer en INotifyPropertyChanged.
    La bonne pratique t'aide toi-même mais surtout ceux qui reprendront le code après toi. La solution avec INotifyPropertyChanged ne consiste pas à renommer ta classe mais à implémenter cet interface c'est tout. La lecture du lien que je t'ai fourni et tester les exemples ne te prendra pas plus d'une heure de ton temps et l'implémentation pas plus de 15 mn.

    Pense à ceux qui viendront après toi pour reprendre le code. Tu risques de déclencher des tas des crises, de dépressions, de suicides et tu en seras responsable

  5. #5
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Citation Envoyé par h2s84 Voir le message

    Non
    Arf, c'était trop beau pour être vrai.

    Citation Envoyé par h2s84 Voir le message
    La bonne pratique t'aide toi-même mais surtout ceux qui reprendront le code après toi. La solution avec INotifyPropertyChanged ne consiste pas à renommer ta classe mais à implémenter cet interface c'est tout. La lecture du lien que je t'ai fourni et tester les exemples ne te prendra pas plus d'une heure de ton temps et l'implémentation pas plus de 15 mn.
    C'est en cours...

    Citation Envoyé par h2s84 Voir le message
    Pense à ceux qui viendront après toi pour reprendre le code. Tu risques de déclencher des tas des crises, de dépressions, de suicides et tu en seras responsable
    Oui j'ai des questions et réflexions bêtes/stupides............

    Merci de ton aide.

    (Je fermerais dès que j'aurais réussi )

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut Besoin d'un event ?
    Bonjour,

    Je me pose la question du besoin réel d'un événement pour savoir si une propriété à changé.

    En effet, l'événement va déclencher un traitement à l'instant T où ta valeur est modifiée. Ça peut être très bien dans certains cas, mais pas systématiquement.

    Si par exemple la propriété est modifiée par une saisie dans une Form, et qu'au moment de sortie de la Form tu souhaite savoir s'il faut enregistrer les modification ou non (et donc déterminer s'il y en a eu !) alors un événement, mise à part pour la beauté de l'art, ne sert à rien.

    Code de départ :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class MaClass
    {
      public int MaValeur = 0;
     
      void MaMethode1(int val);
      {
          MaValeur = val; // Je veux savoir si j'ai modifié la valeur ici
      }
      void MaMethode2(int val);
      {
          MaValeur = val * 2; // Ou là
      }
    }

    Code modifié :
    Code c# : 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
     
    class MaClass
    {
      private int backvalue_MaValeur = 0;
     
      public bool Changed = false;
      public int MaValeur
      {
         set
         {
              if (value != backvalue_MaValeur)
              {
                   Changed = true;
                   backvalue_MaValeur = value;
              }
         }
         get
         {
              return backvalue_MaValeur;
         }
      }
     
      void MaMethode1(int val);
      {
          MaValeur = val; // Ca met à jour Changed si la valeur est modifiée
      }
      void MaMethode2(int val);
      {
          MaValeur = val * 2; // Et là aussi
      }
    }

    Ceci permet aussi de piloter si oui ou non tu veux modifier la valeur en activant ou non le setter. Par exemple, si tu as un bouton "load" qui permet de charger les propriété de ton objet à partir d'une base de donnée, alors tu ne voudra pas passer "Changed" à true, au contraire.

    Du coup tu feras :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      void Load(int val);
      {
          backvalue_MaValeur = val; // Là, je ne déclenche pas le "set" de MaValeur.
      }

Discussions similaires

  1. Pause dans un programme lorsqu'une variable change de valeur.
    Par Jérôme Lambert dans le forum Visual Studio
    Réponses: 5
    Dernier message: 21/10/2008, 11h26
  2. [débutant] Comment savoir si une variable est définie
    Par guidav dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/11/2006, 17h47
  3. Réponses: 3
    Dernier message: 28/07/2006, 15h45
  4. Réponses: 9
    Dernier message: 06/02/2006, 14h12
  5. Comment savoir si une variable est initialisée ?
    Par nabix dans le forum Général Python
    Réponses: 8
    Dernier message: 10/03/2005, 15h12

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