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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert 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
    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 Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    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
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert 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
    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 Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    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
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre Expert 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
    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 Expert 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
    Par défaut
    Re,
    A priori je n'ai pas été plus clair, Si vous voulez plus d'explications demandez moi...

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