Événements

Vous avez un objet qui doit vous renvoyer une information. Exemple un client doit se connecter à un serveur et vous souhaitez recupérer l'information qu'il s'est connecté. Voici un petit exemple.

La premiere chose à faire est dans la classe de votre objet de créer le ou les évenements. Cette événement renverra un argument herité de EventArgs. Il est possible de passer n'importe quelle variable que l'on souhaite

|Exemple d'evenement Classe Client
    class Client
    {
        public event EventHandler<ConnectedEventArgs> ClientConneted;
 
        protected virtual void OnClientConnected(ConnectedEventArgs e)
        {
            if (ClientConneted != null) ClientConneted(this, e);
        }
 
        public Client()
        {
        }
 
        public void Connect()
        {
            //Procédure de connexion ....
            // Si connecté :
 
            //Déclenchement de l'évenement
            OnClientConnected(new ConnectedEventArgs("Connexion OK !",14));
        }
    }
 
    //Classe de l'argument de l'evement
    public class ConnectedEventArgs : EventArgs
    {
        internal string m_msg;   //Un parametre quelconque passé
        internal int m_val;
 
        public ConnectedEventArgs(string msg, int val)
        {
            m_msg = msg;
            m_val = val;
        }
    }

Une fois que vous avez créé votre événement dans votre objet, il faut que votre application s'abonne à cette événement :

|Exemple d'evenement Abonnement et déclenchement
    class Client
    {
        Client clt = new Client();
 
        public Form1()
        {
            InitializeComponent();
 
            //Abonnement à l'évenement
            clt.ClientConneted += new EventHandler<ConnectedEventArgs>(clt_ClientConneted);
            //Lancement de la précudure de connexion qui déclenchera l'évenement
            clt.Connect();
        }
 
        /// <summary>
        /// Methode qui sera executé au déclenchement de l'évenement
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void clt_ClientConneted(object sender, ConnectedEventArgs e)
        {
            MessageBox.Show("Client connecté, argument: " + e.m_msg + " val: " + e.m_val); 
        }
    }