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

Windows Forms Discussion :

[DEBUTANT] Evenement lorsqu'une variable change de valeur


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut [DEBUTANT] Evenement lorsqu'une variable change de valeur
    Bonjours tous le monde,

    Voici ma situation :

    J'ai une variable "erreurCandidat" de type int, cette variable est accessible par l'ensemble de ma classe.

    Et j'aimerai, déclencher un événement lorsque cette variable change de valeur.
    Est-ce possible ? si oui, comment faire ?


    Je vous remercie d'avance !

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 215
    Par défaut
    A priori (mais je suis peu avancé en C#, je suis actuellement en formation), la seule manière que je verrais serait que tu lances un thread vérifiant en permanence la valeur de ta variable, et quand elle change, tu déclenches l'évènement (ou bien tu mets directement le code à effectuer).

  3. #3
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Pourquoi ne pas l'implémentée en tant que propriété comme ça tu peux même interdire l'accès ou la modification :
    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
     
    // Valeur accès restreint qui contient la valeur de la propriété ErreurCandidat
    internal int erreurCandidat = 0;
     
    // Evénement
    public event EventHandler ErreurCandidatChanged;
    ...
     
    public int ErreurCandidat
    {
        get
        {
            return erreurCandidat;
        }
     
        set
        {
            // Controle de la nouvelle valeur
     
            erreurCandidat = value;
     
            // Déclencher l'événement
            if(ErreurCandidatChanged != null)
            {
                ErreurCandidatChanged.Invoke(this, EventArgs.Empty);
            }
        }
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    Merci de votre aide,

    @emmr.rida, je t'avoue ne pas reussir à mettre en place ta solution,

    Enfaite je fais actuellement un petit jeu dans le cadre de mes études,
    à chaque mauvaise réponse du candidat j'incrémente ma variable nbErreur, et donc à chaque erreur je lance une procédure.


    Voici ma situation actuelle :

    Ici des que ma variable s'incremente je lance ma procédure de dessin
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void verifierProposition(object sender, System.EventArgs e)
            {
               [...]
                    if (erreur == true)
                    {
                        nbErreurJoueur++;
                        labelNbErreur.Text = nbErreurJoueur.ToString();
                        dessin();
                    }
             }
    Ma procedure de dessin redirige vers d'autres procedure
    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
     
    private void dessin()
            {
    if (nbErreurJoueur == 1)
                        {
                            dessinerPoutreVertical();
                        }
                        else if (nbErreurJoueur == 2)
                        {
                            dessinerPoutreDiagonal();
                        }
                        else if (nbErreurJoueur == 3)
                        {
                            dessinerPoutreHonrizontal();
                        }
             }

    Ceci est fonctionnel, mais mon projet dois être un maximum "evenementielle"
    c'est pourquoi je souhaite déclencher un événement directement sur la variable.

    J'ai donc essayé çà :

    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
     
            internal int nbErreurJoueur;
    public event EventHandler nbErreurJoueurChanged;
            public int NbErreurJoueur
            {
                get
                {
                    return nbErreurJoueur;
                }
     
                set
                {
                    // Controle de la nouvelle valeur
                    nbErreurJoueur = value;
     
                    // Déclencher l'événement
                    if (nbErreurJoueurChanged != null)
                    {
                        nbErreurJoueurChanged.Invoke(this, EventArgs.Empty);
                        MessageBox.Show("test");
                    }
                }
            }

    Mon nbErreur s'incremente bien mais l'evenement ne se lance pas..


    Voilà sais tu ce que je fais mal ?

    Merci d'avance !

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Parce que tu incrémente la variable et non pas la propriété!

    Et non pas :


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    Citation Envoyé par emmr.rida Voir le message
    Parce que tu incrémente la variable et non pas la propriété!

    Et non pas :

    Je ne voudrais pas abuser de ta patience, mais çà ne marche pas non plus,


    nbErreurJoueur prends bien la nouvelle valeur et pourtant je ne rentre pas dans la condition if (nbErreurJoueurChanged != null)
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    nbErreurJoueur = value;
     
                    // Déclencher l'événement
                    if (nbErreurJoueurChanged != null)
                    {
                        nbErreurJoueurChanged.Invoke(this, EventArgs.Empty);
                        MessageBox.Show("test");
                    }

    Sais tu d'où cela peut venir ?

    Merci.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/11/2013, 15h49
  2. [Débutant] comment savoir si une variable change de valeur
    Par lou87 dans le forum C#
    Réponses: 6
    Dernier message: 30/03/2012, 10h25
  3. Réponses: 1
    Dernier message: 04/02/2010, 11h45
  4. Réponses: 8
    Dernier message: 22/09/2009, 21h00
  5. 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

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