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 :

crèè mon propre evenement


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut crèè mon propre evenement
    Bonjour,

    je crèè une librairy pour me connecter a des serveurs

    j'aimerais donnè la possibilitè a un utilisateurs d'inseret du code dans un evenement qui reagirè sur l'evenement StateChange de ma connection

    le problème c'est que je ne sais pas du tout par ou commencer et quoi fair


    j'ai chercher quelque source sur code-sources.com mais rien de concret par rapport a mes besoins


    merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    C'est très simple pourvu que tu l'ai déjà fais toi même.

    Il y a un exemple de création d'évennement ici :
    http://morpheus.developpez.com/usercontrols/

    Il faut
    - déclarer un Handler (delegate)
    - surement enrichir l'évennement en dérivant EventArgs dans une nouvelle classe (MachinEventsArgs)
    - puis déclarer son évent.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    c'est peut etre moi qui suis bete mais je ny arrive pas...

    dans ton liens je ne vois pas ou je dit que mon nouvel evenement(la ou l'utilisateur taperas sa portion de code) doit etre declancher quand l'evenement StateChange de ma variable SqlConnection reagit

    de plus, comme c'est une librairy je n'aurais pas accès a la liste de ses evenements en haut a droit?? donc comme y accèdè pour verifier qu'il est crèè??

    voici une partie de mon code

    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
    namespace ADO_TheBlackReverand
    {
        /// <summary>Outils de gestion de serveur SQL</summary>
        public class SQL
        {
            /// <summary>Variable : SQLConnexion</summary>
            static protected SqlConnection Conn;
     
            /// <summary>Evenement reagissant quand le status de la  connection change</summary>
            public delegate void ConnChangedHandler(object sender, EventArgs e);
            public event ConnChangedHandler ConnChangedClick;
     
            private virtual void OnConnChangedClick(EventArgs e)
            {
                if (ConnChangedClick != null)
                {
                    ConnChangedClick(this, e);
                }
            }
        }
    }
    biensur ce n'est pas tout mais le reste n'influence pas je pense(se sont des classes qui permet d'ouvrir la connexion, recuperer des donnèes....)

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    D'après la MSDN, l'objet SqlConnection a déjà un event qui se nomme StateChanged. J'ai l'impression que le plus simple pour toi, est de faire que ta classe SQL dérive de SqlConnection, comme ça elle hérite de cet event, et d'autres classes pourront s'y abonner. Sinon, tu dois "rediriger" cet event : tu en crées un du meêm nom dans ta classe, qui se déclenche quand l'event de la SqlConnection est lancé.

    Et un détail de vocabulaire :
    mon nouvel evenement(la ou l'utilisateur taperas sa portion de code)
    La portion de code de l'utilisateur n'est pas l'événement ; c'est une fonction ABONNEE a l'évenement défini par ta classe. Nuance

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    voila c'est tout a fait sa que je veut fair

    crèè un evenement perso et rediriger "SqlConnection.StateChange" vers ce nouvel evenement


    mais je ne sais pas comment fair la redirection

    ni la maniere dont je doit declarer la fonction "abonnee" a mon evenement


    merci de votre aide

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Tu as ta classe, déclaré ton Handler, et déclaré un event (public) du type de ton Handler.

    Exemple :

    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
     
    TaClasse
    {
    // delegate :
    public delegate void TonHandler( object sender, TaClasseEventArgs e );
    // event public, donc "proposé":
    public event TonHandler UnNomCool;
     
    private void OnBiduleCeQuetuveux( object sender, EventArgs e )
    {
      if( this.UnNomCool != null )
      { 
        UnNomCool( this <(ou sender)>, new TaClasseEventArgs( "TROP COOL" ) );
      }
    }
    }
     
    TaClasseEventArgs : EventArgs // ton propre evennement si tu veux l'enrichir
    {
    private string m_Cool = "";
     
    public string Cool
    {
    get { return m_Cool; }
    }
    }
    TaClasseEventArgs( string cool )
    {
    m_Cool = cool;
    }

    Là, ce que tu as fait c'est "proposer" de s'abonner à un event.

    Ensuite n'importe ou, si tu as une instance de TaClasse, tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TaClasse Hop = <...>;
     
    Hop.UnNomCool += new TaClasse.TonHandler( TaMethode );
     
     
    private void TaMethode( object sender, TaClasseEventArgs e )
    {
      MessageBox.Show( e.Cool );
    }
    Si tu tape Hop.UnNomCool += puis Tabulation *2 il va te proposer tout ça automatiquement.



    Il est important dans TaClasse de bien vérifier que l'event != null : car c'est celui qui instancie TaClasse qui va lui attribuer un Handler. S'il ne le fait pas, event est à null (logique).

Discussions similaires

  1. Trace et Mon propre journal d'evenement
    Par alexking2005 dans le forum C#
    Réponses: 6
    Dernier message: 13/12/2007, 19h33
  2. [C#] Comment passer mon propre objet à la méthode Web ?
    Par mimibobo dans le forum Services Web
    Réponses: 6
    Dernier message: 05/10/2006, 10h08
  3. en configurant mon easyphp j'ai bloqué mon propre IP
    Par boogieboy dans le forum Apache
    Réponses: 2
    Dernier message: 02/04/2006, 19h14
  4. Réponses: 4
    Dernier message: 13/08/2005, 10h20
  5. [apache] probleme d'accès à mon propre serveur
    Par sunfunfree dans le forum Apache
    Réponses: 6
    Dernier message: 15/02/2005, 16h16

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