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 :

Probleme simple d'event


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut Probleme simple d'event
    Bonjour,
    J'ai un probleme tout simple, mais je ne sais plus du tout comment faire.

    Admettons une Classe A.
    Dans cette classe A une liste d'objet B (List<B>).

    Je souhaiterai declencher une fonction de A lorsqu'il se produit une certaine chose dans une des instance de B (contenue dans la liste de A).

    J'espere avoir été assez clair.
    Merci...

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    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
     
    class A 
        {
            private List<B> liste = new List<B>();
            public A()
            {
                liste.Add(new B(this));
                liste.Add(new B(this));
                liste.Add(new B(this));
                liste.Add(new B(this));
                liste.Add(new B(this));
            }
            public void UneFonction()
            {
                MessageBox.Show("Ex de la foncttion dans la classe A");
            }
        }
     
        class B
        {
            A classe_A;
            public B(A classe_A)
            {
                this.classe_A = classe_A;
                uneCertainChose() ;
            }
     
            private void uneCertainChose()
            {
     	        classe_A.UneFonction();
            }
        }
    ?

    EDIT : C'est quoi comme objet B ? Sinon poste ton code on y verra plus clair

  3. #3
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut
    Pourquoi la classe B contitent elle une instance de A.

    Je pense qu'il faut gerer ce que je veux faire avec des evenements.
    (B est un Objet quelconque)

    ((Mo code est super long))

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    A s'abonne à un évènement et l'associe à une callback qui lance la méthode de A souhaitée et B lance l'évènement genre dans A:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    this.MonEvent += MonEventHandler(MaCallback);
     
    public void MaCallback(object sender, MonEventArgs)
    {
        this.toto();
    }
    Et dans B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void RaiseEvent()
    {
        if(this.Event != null)
            this.Event(this, new MonEventArgs());
    }

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    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
    34
    35
    36
    37
    38
    39
    40
    41
    void Main()
    {
    	var a = new ClassA();
    }
     
     
    public class ClassA
    {
    	private readonly List<ClassB> _myList = new List<ClassB>();
     
    	public ClassA()
    	{
    		for(int i=0;i<5;i++)
    		{
    			var b = new ClassB();
    			b.MyEvent += OnBEvent;
    			_myList.Add(b);
    		}
     
    		foreach (var element in _myList)
    		{
    			element.RaiseMyEvent();
    		}
    	}
     
    	private void OnBEvent(object sender, EventArgs args)
    	{
    		Console.WriteLine("EventRaised");
    	}
    }
     
    public class ClassB
    {
    	public event EventHandler<EventArgs> MyEvent;
     
    	public void RaiseMyEvent()
    	{
    		if(MyEvent!=null)
    			MyEvent(this, new EventArgs());
    	}
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Autant pour moi j'ai mal lu la question.

  7. #7
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut
    Merci

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

Discussions similaires

  1. Probleme simple, mais grave!
    Par vienin dans le forum C++
    Réponses: 15
    Dernier message: 09/12/2005, 01h05
  2. [vb.net][datagrid] probleme avec l'event lostfocus
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/10/2005, 13h24
  3. Probleme simple : Update du champ le + petit
    Par barok dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/09/2005, 13h33
  4. Probleme simple de debutant avec INSERT TO et UPDATE
    Par Tom_Cruise dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 08h15
  5. probleme simple de tab[][]
    Par vince3320 dans le forum C
    Réponses: 8
    Dernier message: 17/05/2004, 17h48

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