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 :

propertygrid et listbox


Sujet :

VB.NET

Vue hybride

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut propertygrid et listbox
    bonjour a tous (ou plutot bonsoir, vu l'heure)

    J'ai découvert grace à un membre de ce site le propertygrid qui est genial. Cependant je bloque sur une chose... je souhaite ajouter une listbox pour un des parametres afin d'autoriser un choix restraint de saisie.
    Le probleme c'est que je n'y arrive pas ;-)

    qq1 a un exemple a me fournir?


    merci

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

    Il te faut définir une class qui hérite de UITypeEditor et utiliser l'attribut Editor pour ta propriété.

    Intéressant à voir : http://msdn2.microsoft.com/fr-fr/lib...40(VS.80).aspx

    Cdt.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    malgres une recherche approfondie j'ai pas trouvé ce que je voulais.

    J'ai bien reussi a mettre un enum dans mon propertygrid mais il n'accepte que des strings.

    Or moi je souhaite faire un choix entre des valeurs numeriques (valeurs d'angles de rotation)

    comment puis je faire dans ce cas?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    La doc de la classe UITypeEditor donne justement comme exemple un éditeur d'angle (en mode graphique)...

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par waspy59 Voir le message
    malgres une recherche approfondie j'ai pas trouvé ce que je voulais.
    On ne doit pas avoir la même notion de "approfondie", j'ai trouvé en quelques minutes

    En gros, il faut définir un éditeur qui sera utilisé dans la propertygrid pour cette propriété. L'éditeur un objet d'un type dérivé de UITypeEditor. En l'occurence il existe une classe ObjectSelectorEditor (dans l'assembly System.Design.dll), qui correspond assez bien à ce que tu cherches, donc on va hériter de cette classe pour éviter d'avoir à refaire le gros du boulot. Tout ce qui reste à faire est de définir la liste des valeurs possibles:
    (c'est en C#, la conversion ne devrait pas être trop compliquée...)
    Code C# : 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
     
        public class AngleSelectorEditor : ObjectSelectorEditor
        {
            public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
            {
                // On indique que cet éditeur est de type "dropdown"
                return UITypeEditorEditStyle.DropDown;
            }
     
            protected override void FillTreeWithData(Selector selector, ITypeDescriptorContext context, IServiceProvider provider)
            {
                // On initialise la liste des valeurs d'angle possibles
                selector.Nodes.Clear();
                selector.AddNode("15°", 15.0, null);
                selector.AddNode("30°", 30.0, null);
                selector.AddNode("45°", 45.0, null);
                selector.AddNode("60°", 60.0, null);
                selector.AddNode("75°", 75.0, null);
                selector.AddNode("90°", 90.0, null);
            }
     
            public override bool IsDropDownResizable
            {
                // On rend le dropdown redimensionnable, ce sera plus pratique
                get { return true; }
            }
     
        }

    Ensuite, il reste juste à indiquer dans le code de ton contrôle que pour la propriété Angle, on va utiliser l'éditeur AngleSelectorEditor, grâce à l'attribut EditorAttribute :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            [Browsable(true), Editor(typeof(AngleSelectorEditor), typeof(UITypeEditor))]
            public double Angle
            {
                get { ... }
                set { ... }
            }

    Et là, magie ! Quand tu places ton contrôle sur une Form et que tu édites ses propriétés, une liste de valeurs apparaît pour la propriété Angle



    Bien sûr l'éditeur peut encore être amélioré, par exemple en pré-sélectionnant dans la liste l'entrée qui correspond à la valeur actuelle (propriété IsSelected des nodes du Selector)...
    Images attachées Images attachées  

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    un tres tres grand merci a toi.... mais quand je traduit le code en vb.net (avec outils sur le net) que deux chose non definit:

    ObjectSelectorEditor
    UITypeEditorEditStyle

    pourtant j'ai reférencé system.design

    j'ai oublié qqchose? (desolé pour mon incompetence mais je suis relativement nouveau dans le VB.net) et les convertion C#>vb.net j'y comprend pas grand chose

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il manque sûrement des using (Imports en VB), je ne les ai pas mis dans le code ci-dessus...
    ObjectSelectorEditor est dans le namespace System.ComponentModel.Design (il faut référencer l'assembly System.Design.dll)
    UITypeEditorEditStyle est dans le namespace System.Drawing.Design (assembly System.Drawing.dll)

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/11/2010, 23h43
  2. Bloquer saisie dans une PropertyGrid de type ListBox
    Par melsanka dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/09/2009, 10h57
  3. Listbox et propertygrid
    Par freerider74 dans le forum C#
    Réponses: 2
    Dernier message: 08/04/2008, 11h25
  4. Databinding listbox et propertygrid
    Par Papy214 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/04/2008, 17h14
  5. Propertygrid et listbox (problemes)
    Par waspy59 dans le forum VB.NET
    Réponses: 5
    Dernier message: 29/02/2008, 09h27

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