Selettori standard per la property grid per User e Custom Controls

Se lavorate molto con User Controls o Custom Controls, avrete senz'altro la necessità di personalizzare il modo in cui le proprietà pubbliche di questi appaiono nella property grid di Visual Studio, onde evitare le limitazioni della classica casella di testo libera.

Su suggerimento del mio amico Marco Nava, vi riporto una collezione degli attributi più usati per personalizzarle.

Nota: gli attributi possono anche essere sommati tra di loro.

Nota 2: gli attributi sono dichiarati in vari namespace/assembly, per sicurezza importate i seguenti:

using System;
using System.ComponentModel;
using System.Windows.Forms.Design;
using System.Drawing.Design;
using System.Web.UI.Design;
using System.ComponentModel.Design;
[Browsable(false)] 
Nasconde una proprietà pubblica all’interno della property grid.

[Category("Stringhe di connessione")]
Consente di raggruppare più proprietà in una categoria.

[Description("Connessione al DB centrale")] 
Descrizione estesa che compare sotto la griglia nel box dedicato ai tooltip.

[DefaultValue(xx)] 
Consente di specificare il valore di default. Ha override per tutti i tipi base.

[EditorAttribute(typeof(ConnectionStringEditor), typeof(UITypeEditor))] 
Il campo è una stringa e contiene una stringa di connessione. La property grid visualizza un editor apposito (che poi di solito è un banalissimo box di testo multilinea)

[EditorAttribute(typeof(FolderNameEditor), typeof(UITypeEditor))] 
Il campo contiene un nome di cartella. La prop.grid visualizza il pulsante […] che consente di scegliere il path.

[EditorAttribute(typeof(FileNameEditor), typeof(UITypeEditor))] 
Il campo è un percorso ad un file. La prop.grid visualizza il pulsante […] che consente di scegliere un file.

[EditorAttribute(typeof(CollectionEditor), typeof(UITypeEditor))] 
Il campo è una collection. Se type è un tipo base (stringa, interi, ecc) visualizza un editor standard che consente di modificare e aggiungere/togliere elementi dalla collezione. A me nell’aggiungere crashava miseramente... In teoria partendo da questo ci si può derivare un editor personalizzato per collezioni di oggetti propri.

[EditorAttribute(typeof(MultilineStringEditor), typeof(UITypeEditor))]        
Il campo è un testo lungo su più linee. La prop.grid visualizza una casella multilinea per consentire una più agevole digitazione.

Oltre a questi sono disponibili tutti i derivati di UITypeEditor (per colori, font, icone, data e ora, url, ecc.):

 

http://msdn.microsoft.com/en-us/library/system.drawing.design.uitypeeditor.aspx

Published venerdì 12 settembre 2008 8.36 by marcodelgatto
Filed under:

Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Powered by Community Server (Commercial Edition), by Telligent Systems