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 :

[.NET 2.0] Probleme Event d'une classe


Sujet :

Windows Forms

  1. #1
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut [.NET 2.0] Probleme Event d'une classe
    Bonjour,

    J'ai fais des tests et :

    SendFile = New EnvoyerFichier(10, "", Nothing)
    ArrayList.Add(SendFile)

    SendFile = New EnvoyerFichier(102, "", Nothing)
    ArrayList.Add(SendFile)

    quand on instancie une classe deux fois mais avec des parametres différents alors les EventHandler de la premiere instanciation sont perdus ?!
    En gros, on peut plus appelé les Events de la premiere classe...

    C'est normal ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Oui, c'est complétement normal vu ton code, car c'est l'adresse de sendfile qui est passée et non pas une copy de sendfile. Dans ton exemple, tu dois avoir 2 fois le même objet dans le arraylist --> qui correspond à EnvoyerFichier(102, "", Nothing).

    Essayes un truc du genre :
    ArrayList.Add(New EnvoyerFichier(10, "", Nothing))
    ArrayList.Add(New EnvoyerFichier(102, "", Nothing))

    Enfin, je pense car je ne sais pas ce qu'est ton arraylist !

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  3. #3
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Merci pour ta réponse,

    Alors avec ton code j'ai aucun des deux sendfile qui ont les Events !
    Je comprends pas du tout !
    Pourtant c'est aps les memes objets puisque les caractéristiques sont différentes...

    C'est juste une arraylist pour tester. J'ai sorti lecode du contexte de l'envoi de fichier.

    Je comprends pas normalement quand on instancie une classe avec New alors les Events sont instanciés aussi.

    Une autre idée ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Bon sans tout le code, je peux pas te dire ou ça pêche ... Probléme de gestion de handler ???

    J'ai fait un exemple qui peut peut-être t'aider :

    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
     
    Option Strict On
    Option Explicit On
    Public Class EnvoyerFichier
        Private Ip As String
     
        Public Event ErrorTransfert(ByVal IpClient As String)
     
        Public Sub New(ByVal IIP As String)
            Ip = IIP
        End Sub
        Public Sub MaMethod()
            RaiseEvent ErrorTransfert(Ip)
        End Sub
    End Class
     
    Public Class Form4
     
        Private daListe As OleDbDataAdapter
        Private myCnn As New OleDbConnection
        WithEvents a As EnvoyerFichier
        Dim ls As New ArrayList
        Private Sub Form4_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
     
            ls.Add(New EnvoyerFichier("test1"))
            AddHandler CType(ls(0), EnvoyerFichier).ErrorTransfert, AddressOf a_ErrorTransfert
            ls.Add(New EnvoyerFichier("test2"))
            AddHandler CType(ls(1), EnvoyerFichier).ErrorTransfert, AddressOf a_ErrorTransfert
     
            CType(ls(0), EnvoyerFichier).MaMethod()
            CType(ls(1), EnvoyerFichier).MaMethod()
     
        End Sub
        Private Sub a_ErrorTransfert(ByVal IpClient As String)
            MsgBox(IpClient)
        End Sub
     
    End Class
    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  5. #5
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par Aspic
    quand on instancie une classe deux fois mais avec des parametres différents alors les EventHandler de la premiere instanciation sont perdus ?!
    En gros, on peut plus appelé les Events de la premiere classe...

    C'est normal ?
    D'après le peu de code que tu donnes, je dirais : oui, c'est normal !

    Peu importe d'aillleurs que tu instancies avec des paramètres différents ou pas. Ce qui compte c'est si au final tu travailles sur deux instances ou pas. Là tu bosses avec deux instances, que tu assignes successivement à la même variable SendFile.

    Je présume que tu as enregistré tes délégués d'event à partir de la variable SendFile, c'est pourquoi, les délégués de la première instance sont remplacés par ceux de la seconde.

    Si tu enregistres tes délégués par exemple à partir des références indexées dans le tableau (ou deux deux variables disctinctes SendFile1 & SendFile2), là ça fonctionnera. Enfin il me semble...
    (\ _ /)
    (='.'=)
    (")-(")

  6. #6
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    J'ai résolu mon problème en instanciant chaque classe avec des AddHandler pour les Events et ca marche
    Merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. [POO] Problème inclusion dans une classe
    Par LordBob dans le forum Langage
    Réponses: 11
    Dernier message: 22/11/2005, 15h21
  2. [.NET][C#] mise en mémoire d'une classe
    Par AB- dans le forum C#
    Réponses: 5
    Dernier message: 10/11/2005, 17h11
  3. [VB.NET]Reflexion lister les membres d'une classe ...presque
    Par lucie.houel dans le forum ASP.NET
    Réponses: 19
    Dernier message: 20/09/2005, 13h49
  4. Réponses: 3
    Dernier message: 13/08/2005, 15h18
  5. [VB.NET] Server.MapPath et Session dans une classe
    Par nancy54 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/09/2004, 14h23

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