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 :

[C#]capture des événements


Sujet :

C#

  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut [C#]capture des événements
    voilà, je veux capturer l'événement d'un objet à partir d'un autre objet

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace EventsCS
    {
        class myEvent : EventArgs
        {
            private string myEventText = null;
     
                    public myEvent(string theEventText)
                    {
                            if (theEventText == null) throw new NullReferenceException();
                            myEventText = theEventText; 
                    }
     
                    public string EventText
                    {
                            get { return this.myEventText; }
                    }
        }
     
        public delegate void myEventHandler(object sender, myEvent e);
     
        class Source
        {
            public event myEventHandler OnTextChanged;
     
            private string myStr;
     
            public Source()
            {
                myStr = "";
            }
     
            public void setStr(string s)
            {
                if (s == null) throw new NullReferenceException();
                myStr = s;
                myEvent e = new myEvent("nouvel �v�nement\t" + s);
                if (e != null)
                    if (OnTextChanged != null)
                        OnTextChanged(this, e);
            }
        }
     
        class Receiver
        {
            public event myEventHandler OnTextChanged;
     
            public Receiver()
            {
            }
     
            public void subscribe(Source s)
            {
                s.OnTextChanged += new myEventHandler(Receiver_OnTextChanged);
            }
     
            public void Receiver_OnTextChanged(string s)
            {
                System.Console.WriteLine(s);
            }
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                Source src = new Source();
                Receiver rcv = new Receiver();
     
                string s = "coucou 1";
                src.setStr(s);
                s = "coucou 2";
                src.setStr(s);
                s = "coucou 3";
                src.setStr(s);
            }
        }
    }



  2. #2
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Euh elle est ou la question ?

    La seule chose que je vois comme cela c'est que tu ne fais pas appel à Subscribe donc à aucun moment tu ne t'abonnes à l'événement.

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par jab
    Euh elle est ou la question ?

    La seule chose que je vois comme cela c'est que tu ne fais pas appel à Subscribe donc à aucun moment tu ne t'abonnes à l'événement.

    ben ma question est : qu'est-ce que j'ai loupé ?


    en c++, je jouait avec __hook, et j'ai lu qu'en C# on faisait
    objet.evenement += new EvenementHandler(methode_a_appeler);

    mais ça ne veut pas...

    as-tu un lien ou un exemple avec ton subscribe, stp ?


  4. #4
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566

  5. #5
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Citation Envoyé par gorgonite
    as-tu un lien ou un exemple avec ton subscribe, stp ?
    Le subscribe, c'est toi qui la défini dans ton code. Il n'a rien d'obligatoire par contre si tu ne fais pas ce qui est dedans, ton objet client n'écoute pas l'évènement de l'autre. Donc puisque tu as mis le code dans cette méthode appelle la dans ta procédure principale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    static void Main(string[] args)
            {
                Source src = new Source();
                Receiver rcv = new Receiver();
                rcv.subscribe(src);
                string s = "coucou 1";
                src.setStr(s);
                s = "coucou 2";
                src.setStr(s);
                s = "coucou 3";
                src.setStr(s);
            }

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par jab
    Le subscribe, c'est toi qui la défini dans ton code. Il n'a rien d'obligatoire par contre si tu ne fais pas ce qui est dedans, ton objet client n'écoute pas l'évènement de l'autre. Donc puisque tu as mis le code dans cette méthode appelle la dans ta procédure principale.

    si tu parles de cela, c'est justement ce que j'essaye de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            public void subscribe(Source s)
            {
                s.OnTextChanged += new myEventHandler(Receiver_OnTextChanged);
            }

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    j'ai bugé sur la signature...


    voilà la solution

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace EventsCS
    {
        class myEvent : EventArgs
        {
            private string myEventText = null;			
     
    		public myEvent(string theEventText)
    		{			
    			if (theEventText == null) throw new NullReferenceException();
    			myEventText = theEventText; 
    		}
     
    		public string EventText
    		{
    			get { return this.myEventText; }
    		}	
        }
     
        public delegate void myEventHandler(object sender, myEvent e);
     
        class Source
        {
            public event myEventHandler TextChanged;
     
            private string myStr;
     
            public Source()
            {
                myStr = "";
            }
     
            public void setStr(string s)
            {
                if (s == null) throw new NullReferenceException();
                myStr = s;
                myEvent e = new myEvent("nouvel événement\t" + s);
                if (e != null)
                    if (TextChanged != null)
                        TextChanged(this, e);
            }
        }
     
        class Receiver
        {
            public Receiver()
            {
            }
     
            public void subscribe(Source s)
            {
                s.TextChanged += new myEventHandler(OnTextChanged);
            }
     
            public void unsubscribe(Source s)
            {
                s.TextChanged -= new myEventHandler(OnTextChanged);
            }
     
            public void OnTextChanged(object sender, myEvent e)
            {
                System.Console.WriteLine(e.EventText);
            }
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                Source src = new Source();
                Receiver rcv = new Receiver();
     
                string s = "coucou 1";
                src.setStr(s);
     
                rcv.subscribe(src);
     
                s = "coucou 2";
                src.setStr(s);
     
                rcv.unsubscribe(src);
     
                s = "coucou 3";
                src.setStr(s);
            }
        }
    }

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    ça buggait sous gmcs (mono dotnet 2.0)


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace EventsCS
    {
        public class myEvent : EventArgs
        {
            private string myEventText = null;
     
            public myEvent(string theEventText)
            {
                    if (theEventText == null) throw new NullReferenceException();
                    myEventText = theEventText; 
            }
     
            public string EventText
            {
                    get { return this.myEventText; }
            }
        }
     
        public delegate void myEventHandler(object sender, myEvent e);
     
        class Source
        {
            public event myEventHandler TextChanged;
     
            private string myStr;
     
            public Source()
            {
                myStr = "";
            }
     
            public void setStr(string s)
            {
                if (s == null) throw new NullReferenceException();
                myStr = s;
                myEvent e = new myEvent("nouvel �v�nement\t" + s);
                if (e != null)
                    if (TextChanged != null)
                        TextChanged(this, e);
            }
        }
     
        class Receiver
        {
            public Receiver()
            {
            }
     
            public void subscribe(Source s)
            {
                s.TextChanged += new myEventHandler(OnTextChanged);
            }
     
            public void unsubscribe(Source s)
            {
                s.TextChanged -= new myEventHandler(OnTextChanged);
            }
     
            public void OnTextChanged(object sender, myEvent e)
            {
                System.Console.WriteLine(e.EventText);
            }
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                Source src = new Source();
                Receiver rcv = new Receiver();
     
                string s = "coucou 1";
                src.setStr(s);
     
                rcv.subscribe(src);
     
                s = "coucou 2";
                src.setStr(s);
     
                rcv.unsubscribe(src);
     
                s = "coucou 3";
                src.setStr(s);
            }
        }
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2010, 11h47
  2. Réponses: 3
    Dernier message: 08/10/2010, 12h42
  3. [JTabbedPane] capture des événements clavier
    Par sepas dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 13/06/2008, 23h10
  4. [CP] Des pistes pour capturer des évènements stylet
    Par guipom dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 05/06/2007, 16h12
  5. [JEditorPane]Captures des touches claviers
    Par splend_f dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 17/05/2004, 14h57

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