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

VB.NET Discussion :

Evènement sur une propriété de type List(Of T) dans un usercontrol


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut Evènement sur une propriété de type List(Of T) dans un usercontrol
    Bonjour,

    Dans un usercontrol, j'ai la propriété suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Property ListeX as List(Of X)
    où X est une classe quelconque.

    J'aimerais avoir un évènement lorsque ce usercontrol sera utilisé et qu'on fera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monUserControl.ListeX.Add(New X(param1, param2))
    J'ai cherché dans 3 directions :
    1° Création d'un event perso avec Public Event ListChanged mais je ne sais pas où le lever.
    2° Implémentation de INotifyPropertyChanged mais il faut appeler NotifyPropertyChanged("ListX") dans le setter de la propriété or le .Add de la liste n'est pas gérer par moi...
    3° Implémentation de IList qui permet de gérer le .Add mais cela ne convient pas ici car le usercontrol n'est pas une liste .

    Du coup, je suis perdu et vient chercher quelques conseils.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    J'opterais pour la première solution mais en créant une classe dérivée de List(of T) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class MyList(Of T)
      Inherits List(Of T)
      Public Event ListChanged(Sender as Object, ...)
      Public Shadows Sub Add(Item as T)
        RaiseEvent ListChanged(Me, ...)
        MyBase.Add(Item)
      End Sub
    End Class
    Après, il y a peut-être d'autres méthodes...
    eb.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 176
    Points : 25 118
    Points
    25 118
    Par défaut
    sinon il y a system.collections.objectmodel.observablecollection(Of ) qui a un évènement collectionchanged

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Génial ce system.collections.objectmodel.observablecollection(Of ) !!

    @ebastien : J'étais en train d'effectuer ce que tu proposais de mon côté avant de voir ta proposition ^^.

    Par contre, l'event CollectionChanged se lève 6 fois à chaque fois.

    Juste encore creuser ça et c'est bon

    Merci beaucoup !!

    @Pol63 : Je suis toujours étonné devant l'étendue de tes connaissances des classes du Framework. Comment fais-tu ? Ce que je veux dire c'est que la classe que viens de me faire découvrir par exemple, jamais je ne serais tombée dessus via Google (à moins de taper son nom exacte mais alors c'est que je la connaissais déjà ) en faisant mes recherches.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    sinon il y a system.collections.objectmodel.observablecollection(Of ) qui a un évènement collectionchanged
    Je ne connaissais pas ! Merci je me coucherai moins bête !

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Je ne connaissais pas ! Merci je me coucherai moins bête !
    D'où ma question du message précédent ^^.

    Sinon, ça a l'air de marcher pas mal et j'ai trouvé la cause du multiple levage de l'event.

    En fait, lors d'un add (quand je teste le usercontrol dans le testcontainer), plutôt que de juste faire un add, il fait un reset de la collection et y ré-ajoute tous les éléments.

    Je n'ai pas encore trouvé d'explication à cela (la MSDN semble assez lacunaire sur le sujet) mais ce n'est pas trop grave à la limite (mais vraiment à la limite).

    Par contre, ce qui est plus ennuyeux c'est que l'évènement n'est pas levé sur un remove... J'en cherche toujours la cause.

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 176
    Points : 25 118
    Points
    25 118
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Je suis toujours étonné devant l'étendue de tes connaissances des classes du Framework. Comment fais-tu ? Ce que je veux dire c'est que la classe que viens de me faire découvrir par exemple, jamais je ne serais tombée dessus via Google (à moins de taper son nom exacte mais alors c'est que je la connaissais déjà ) en faisant mes recherches.
    plusieurs choses
    - la veille technologique, il y a des articles qui sortent à chaque nouvelle version du framework avec un survol des grandes nouveautés
    - il y a aussi des tutos sur les technologies, et quand on s'interresse à wpf par exemple, ca parle forcément d'observablecollection (et des tas d'autres choses qui sont quand même utilisables en winforms)
    - aussi en se promenant ici on apprend des choses et les ressortir à d'autres
    - l'exploration. le framework est immense et on a pas besoin de tout, mais rien n’empêche de parcourir les namespaces via l'intellisense pour voir les classes et le rapide descriptif de ce que ca fait, et regarder en détail certaines choses
    ...
    le poste joue peut être aussi, si on doit développer des trucs simples et tracés on a pas forcément de questions à se poser

    et ceci n'est pas une perte de temps, souvent on écrit des choses qui existent déjà en mieux quelquepart dans le framework, si on les connait on gagne du temps


    Citation Envoyé par Kropernic Voir le message
    Par contre, ce qui est plus ennuyeux c'est que l'évènement n'est pas levé sur un remove
    normalement si
    sur e tu as des propriétés qui te permettent de savoir le type de changement et les éléments ajoutés/supprimés/modifiés

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    plusieurs choses
    - la veille technologique, il y a des articles qui sortent à chaque nouvelle version du framework avec un survol des grandes nouveautés
    - il y a aussi des tutos sur les technologies, et quand on s'interresse à wpf par exemple, ca parle forcément d'observablecollection (et des tas d'autres choses qui sont quand même utilisables en winforms)
    - aussi en se promenant ici on apprend des choses et les ressortir à d'autres
    - l'exploration. le framework est immense et on a pas besoin de tout, mais rien n’empêche de parcourir les namespaces via l'intellisense pour voir les classes et le rapide descriptif de ce que ca fait, et regarder en détail certaines choses
    ...
    le poste joue peut être aussi, si on doit développer des trucs simples et tracés on a pas forcément de questions à se poser

    et ceci n'est pas une perte de temps, souvent on écrit des choses qui existent déjà en mieux quelquepart dans le framework, si on les connait on gagne du temps



    normalement si
    sur e tu as des propriétés qui te permettent de savoir le type de changement et les éléments ajoutés/supprimés/modifiés
    Dans ce que tu cites, je faisais déjà un peu le parcours de l'intellisense. Pour le reste, c'est uniquement winforms ici donc wpf, j'ai pas encore trop eu le temps de regarder (après le boulot, je ne bosse plus ^^)

    Bref, concernant l'event, en fait il se lève bien sur le remove mais, pour une raison que j'ignore lorsque je faisais MsgBox(e.Action.ToString()) (je commence tjs par afficher des messages pour voir comment ça se comporte), rien ne s'affichait. Par contre, en mettant le code pour faire le traitement attendu lors d'une action remove, ça fonctionne bien...

    Tout va bien donc

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 176
    Points : 25 118
    Points
    25 118
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    (après le boulot, je ne bosse plus ^^)
    la différence est là aussi alors, quand on est passionné on a la temps, au boulot on a pas forcément le temps de lire

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

Discussions similaires

  1. [AC-2010] Création d'un objet contenant une propriété de type liste
    Par alain_bubu dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/01/2015, 23h26
  2. Réponses: 2
    Dernier message: 18/06/2014, 17h25
  3. [MVVM] Binding xaml sur une List/ObserveableCollection du Model plutôt que sur une propriété du Model
    Par uluquiorra dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 21/11/2012, 18h43
  4. Tri ListView sur une colonne de type List<T>
    Par thelpi dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 05/01/2010, 16h46
  5. Réponses: 2
    Dernier message: 18/10/2003, 14h42

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