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 :

Surcharger le composant du Framework TreeView


Sujet :

Windows Forms

  1. #1
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut Surcharger le composant du Framework TreeView
    Bonjour à tous,

    J'ai créé un composant TreeViewDérivé et TreeNodeDérivé qui dérivent respectivement de TreeView et TreeNode.
    Je leur ai écris des propriétés et des méthodes supplémentaires et spécifiques.
    Mais je voudrais que mon TreeViewDérivé pour sa propriété Nodes me renvoie une collection de TreeNodeDérivé (qui pour TreeView est une collection de TreeNode), et également toutes les méthodes et les propriétés...
    Sans pour autant à avoir à réécrire toutes les méthodes et propriétés de TreeView pour qu'ils acceptent/renvoient un TreeNodeDérivé.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    la propriété Nodes n'est pas overridable, mais rien n'empeche de l'overloader

    après pour s'embeter, moi je ferais un appel à Base.Nodes dont je casterais le contenu sur une collection de tes TreeNodesDerivés
    après au niveau des collection y a le choix, un system.collection.generic.List(<T>) devrait aller

  3. #3
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    la propriété Nodes n'est pas overridable, mais rien n'empeche de l'overloader
    Je l'ai déjà fait et ça fonctionne pas trop mal. de toute façon il y a toujours un MAIS...que je t'expliquerai après.


    après pour s'embeter, moi je ferais un appel à Base.Nodes dont je casterais le contenu sur une collection de tes TreeNodesDerivés
    après au niveau des collection y a le choix, un system.collection.generic.List(<T>) devrait aller
    Déjà fait aussi mais le cast ne fonctionne pas...
    et c'est pas tout, dans editeur de Il y a un éditeur de TreeView que j'ai recréé et modifié pour qu'il puisse me créer des TreeNodeDérivé mais il ne génère pas le bon code quand on lance l'éditeur à partir de la propriété Nodes de TreeViewDérivé. Il caste des TreeNode en TreeNodeDérivé et je perds des informations. Je suis sûr que quelquechose m'échappe mais je ne vois pas quoi...

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    et en reprenant une grosse partie du code du TreeviewCollection dans un héritage, puis en faisant une propriété as ce dérivé ?

    et j'ai pas compris ton histoire d'éditeur

  5. #5
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Faire une collection n'est pas le problème, c'est plutot faire en sorte que le TreeViewDérivé n'utilise que des Objets TreeNodeDérivé.
    Dans son fonctionnement, il gère que des TreeNode. Il faudrait avoir la possibilité de manipuler ces objets sans me retaper tous les méthodes et propriétés de TreeView à faire à la main.

    Pour l'éditeur graphique de la collection de Nodes pour un TreeView, dans visual studio, il existe un petit formulaire de saisie, pour remplir visuellement l'arbre du TreeView.
    j'en ai fait un quasiment identique pour le mien et il ne sérialise pas mes objets TreeNodeDérivé correctement dans le InitialiseComponents() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TreeNodeDérivé TreeNodeDérivé1 = ((TreeNodeDérivé )(new System.Windows.Forms.TreeNode("toto")));
    ...
    this.TreeViewDérivé1 = new TreeViewDérivé(this.components);
    ...
    TreeViewDérivé1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
                TreeNodeDérivé1});
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TreeNodeDérivé TreeNodeDérivé1 = new System.Windows.Forms.TreeNodeDérivé ("toto","titi","tata");
    ...
    this.TreeViewDérivé1 = new TreeViewDérivé(this.components);
    ...
    TreeViewDérivé1.Nodes.AddRange(new System.Windows.Forms.TreeNodeDérivé[] {
                TreeNodeDérivé1});
    J'espère qu'avec cette petite explication j'ai été plus clair qu'en haut...

  6. #6
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Re,
    A priori je n'ai pas été plus clair, Si vous voulez plus d'explications demandez moi...

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    A priori je n'ai pas été plus clair
    malheureusement si ...

    je ne vois pas comment faire fonctionner le tout avec des nodes dérivés ...
    alors avec peu de code ca me semble encore moins faisable !
    pour initializecomponent tu peux peut etre redéfinir le sérialiseur à utiliser


    si tu peux faire l'appli en wpf, tu seras moins limité à priori ...

  8. #8
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    merci pour ta réponse...

    Mais le cahier des charges n'inclus pas le WPF même si je pense aussi que cela aurait été beaucoup plus facile...
    Et peu de code ça veux dire le moins de code possible pour des questions d'optimisation.
    Déjà que l'ihm n'est pas très rapide, il ne faudrait pas trop en rajouter...
    C'est le but également de ma démarche. Mais pour le moment j'avoue que

  9. #9
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Peut-être que c'est pas le bon endroit?

Discussions similaires

  1. [2.x] Surcharger un composant symfony2
    Par johnbenz dans le forum Symfony
    Réponses: 2
    Dernier message: 14/11/2011, 19h02
  2. Plugin (framework) TreeView
    Par insane_80 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/06/2011, 15h40
  3. [Tests] Annonces de composants, extensions, frameworks etc.
    Par Community Management dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 06/01/2009, 13h33
  4. [Tests] Recherche Composant/outil/framework pour tester navigation web
    Par kaboume dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/11/2008, 11h34
  5. Réponses: 1
    Dernier message: 20/08/2006, 18h48

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