2008-09-16 6 views
2

J'ai une application Windows qui utilise un contrôle .NET PropertyGrid. Est-il possible de modifier le type de contrôle utilisé pour le champ de valeur d'une propriété?Comment modifier le type de contrôle utilisé dans un .NET PropertyGrid

Je voudrais être en mesure d'utiliser un RichTextBox pour permettre un meilleur formatage de la valeur d'entrée. Cela peut-il être fait sans créer de classe d'éditeur personnalisée?

Répondre

4

Pour ajouter votre propre modification personnalisée lorsque l'utilisateur sélectionne une valeur de grille de propriétés, vous devez implémenter une classe dérivée de UITypeEditor. Vous avez alors le choix de montrer juste une petite fenêtre popup sous la zone de propriété ou une boîte de dialogue complète.

Ce qui est bien, c'est que vous pouvez réutiliser les implémentations existantes. Donc, pour ajouter la possibilité de modifier une chaîne multiligne vous faites juste cela ...


     [Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))] 
     public override string Text 
     { 
      get { return _string; } 
      set { _string = value; } 
     } 

Une autre belle celui qu'ils offrent pour vous est la possibilité d'éditer un tableau de chaînes ...


     [Editor("System.Windows.Forms.Design.StringArrayEditor, 
     System.Design, Version=2.0.0.0, 
     Culture=neutral, 
     PublicKeyToken=b03f5f7f11d50a3a", 
     typeof(UITypeEditor))] 
     public string[] Lines 
     { 
      get { return _lines; } 
      set { _lines = value; } 
     } 
+0

Merci . C'était parfait! Un ajout à la place de typeof (UITypeEditor) vous pouvez utiliser "System.Drawing.Design.UITypeEditor, System.Drawing, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a" trouvé qu'après quelques erreurs de compilation –

0

Je pense que ce que vous cherchez est des descripteurs de type personnalisés. Vous pouvez lire un peu et commencer ici: http://www.codeproject.com/KB/miscctrl/bending_property.aspx

Je ne suis pas sûr que vous pouvez faire le contrôle que vous voulez, mais cet article m'a permis de démarrer sur les grilles de propriété.

1

Vous pouvez contrôler si PropertyGrid affiche une zone d'édition simple, une flèche déroulante ou un contrôle ellipse.

Recherchez le composant EditorAttribute et suivez-le à partir de là. J'ai eu un échantillon quelque part; Je vais essayer de le déterrer.

Questions connexes