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 :

Collection de contrôles dans la fenêtre propriétés d'un UserControl


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut Collection de contrôles dans la fenêtre propriétés d'un UserControl
    Je viens de créer un UserControl. il contient des panels (collection de controles héritant de Panel)
    J'aimerai que le concepteur graphique me permette de paramétrer par le biais de la fenêtre Propriété certain des Contrôles de la collection.

    Mes contrôles sont du type :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
        public partial class UserControl1 : UserControl
        {
            public GroupPanelColl GroupPanelCollection
            {
                set
                {
                    this.Controls = (GroupPanelColl)value;
                }
                get
                {
                    return (GroupPanelColl)this.Controls;
                }
            }
            public void Add(GroupPanel g)
            {
                this.Controls.Add(g);
            }
            public void Remove(GroupPanel g)
            {
                this.Controls.Remove(g);
            }
     
            public UserControl1()
            {
                InitializeComponent();
            }
        }
     
        public class GroupPanelColl : System.Windows.Forms.Control.ControlCollection
        {
            public GroupPanelColl()
            {
            }
            public void Add(GroupPanel panneau)
            {
                List.Add(panneau);
            }
            public void Remove(int index)
            {
                if (index <= Count - 1 && index >= 0)
                {
                    base.List.RemoveAt(index);
                }
            }
            public GroupPanel Item(int Index)
            {
                return (GroupPanel)base.List[Index];
            }
        }
     
        public class GroupPanel : Panel
        {
            public string Caption;
            public bool Active;
            public bool Movable;
            public bool Resizable;
     
            public GroupPanel()
            {
            }
        }
    C'est pour cela que j'ai créé le type GroupPanelColl afin de visualiser la collection de GroupPanel (sans cela je ne verrai pas les propriétés (Caption, Active, Movable, Resizable) des GroupPanel.

    Mais le problème c'est que tout ça ne compile même pas et que je n'y arrive aps après quelques heures passées dessus.


    Pour l'instant je ne vois pas ces contrôles.
    Comment faire pour qu'iol apparaissent dans la fenetre de propriétés ?
    en ligne 9 : this.Controls est en lecture seule.
    en ligne 32 : public GroupPanelColl() pour une ControlCollection le constructeur reçoit impérativement un Owner ! mais quoi en faire ???
    en ligne 37 : List.Add(panneau) -> List recquiert un argument de Type'1' ?????

    Bref, je dois m'y prendre comme un débtant que pourtant je ne suis pas, mais commnt faire pour que le concepteur permette la visualisation des propriétés de UserControls ??? J'ai pas trouvé de tuto sur ce sujet...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    je peux poser ma question plus simplement.
    Commentfait-on pour que pour un contrôle qu'on a créé, les propriétés des contrôles de ce Conteneur apparaissent dans la fenêtre propriétés et que quand on les change par ce biais, le contrôle soi modifié.

    Je ne trouve pas de tuto sur ce point. Je crois me rappeller qu'il faut que le contrôle hérite d'une Interface, mais je ne trouve pas laquelle...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    je continue dans ma question des foisque ça interpellerait quelqu'un...

    J'ai créé une propriété BackColor dans mon UserControl cette couleur 'serait celle d'un Button' (c'est un exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            public override System.Drawing.Color BackColor
            {
                get
                {
                    return this.backColor;
                }
                set
                {
                    this.btn1.BackColor = value;
                    this.backColor = value;
                }
            }
    Le problème est que, si lorsque j'ai compilé mon UserControl, je le colle dans une Form.
    Ladite propriété BackColor n'apparait plus dans le .designer.cs de la Form ???
    et que je suis aobligé de l'initialiser en dehors du InitializeComponent () ????

    Je pense que c'est encore une fos lié avec l'intégration des UserControl dans dans le designer graphique de VS.

    Si quelqu'un a déjà rencontré / résolu ce genre de problème je suisprener d'un tuyau...

  4. #4
    Membre expérimenté
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Par défaut
    faut regarder au niveau des attributs, il y a le [Browsable(true)] pour faire simple mais il y a moyen d'aller beaucoup plus loin.

    tu trouveras plus d'infos la : http://msdn2.microsoft.com/fr-fr/lib...fh(VS.80).aspx

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    tu peux utiliser l'attribut [Browsable(true)] pour que ta propriété apparaisse dans le designer (fenetre de propriété j'entends par là)

    The Monz, Toulouse

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    Je doute pas de votre solution, mais y'a quelque chose que je dois rater.
    Pour faire simple, dans un User Control j'ai collé un ImageList.

    Si j'applique la méthode préconisée :
    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
     
    namespace MyNamespace
    {
        public partial class test : UserControl
        {
            [Browsable(true)]
            public ImageList MyList
            {
                get
                {
                    return this.imageList1;
                }
                set
                {
                    this.imageList1 = value;
                }
            }
            public test()
            {
                InitializeComponent();
            }
        }
    }
    Je ne vois toujours pas de la propriété MyList dans la fenêtre e propriétés ???

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    je viens de fouiller encore et encore et ça le fait toujours pas.
    même avec le code suivant :
    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
     
            private string myName;
     
            [Browsable(true), EditorBrowsable(EditorBrowsableState.Always), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
            [DefaultValue("")]
            public ImageList MyList
            {
                get
                {
                    return this.imageList1;
                }
                set
                {
                    this.imageList1 = value;
                }
            }
            [DefaultValue("")]
            public string MyName
            {
                get
                {
                    return this.myName;
                }
                set
                {
                    this.myName = value;
                }
            }
            public test()
            {
                InitializeComponent();
            }
    Toujours pas de MyList ou MyName dans la fenêtre propriétés !!!

Discussions similaires

  1. Boutons évènements dans la fenêtre propriétés
    Par Ndugu dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/02/2009, 01h43
  2. Réponses: 1
    Dernier message: 20/08/2008, 13h27
  3. Réponses: 12
    Dernier message: 23/04/2007, 17h37
  4. Déplacer les contrôles dans une fenêtre.
    Par SuperWeight dans le forum Windows
    Réponses: 1
    Dernier message: 13/04/2007, 11h15
  5. Réponses: 2
    Dernier message: 25/05/2006, 00h08

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