=====Introduction=====
''PropertyGrid'' affiche les propriétés d'une instance d'une classe.
Une propriété, c'est avec get/set. Dans sa version minimaliste :
public string Prop { get; set; }
=====Personnaliser l'affichage d'un attribut=====
Les annotations ci-dessous doivent se mettre dans la partie la plus basse de la hiérarchie de l'héritage. Le mettre dans une interface ne sert à rien. Il faut les mettre dans la classe qui l'implémente. Ce commentaire n'est valable que pour le composant ''PropertyGrid''. Dans le cas d'un ''DataGridView'', c'est les annotations de la classe/interface la plus haute qui est prise en compte.
===Afficher l'attribut===
[Browsable(true)]
===Rendre l'attribut non-éditable===
[ReadOnly(true)]
===Nom de la catégorie===
[Category("Commun")]
===Nom public de l'attribut===
Ce nom s'affiche aussi en haut d'une colonne d'un ''DataGridView''.
[DisplayName("Mon nom")]
===Aide sur l'attribut===
[Category("Description perso")]
===Attribut de type fichier===
Permettre l'édition du champ via un ''OpenFileDialog''.
[Editor(typeof(OpenFileEditor), typeof(UITypeEditor))]
internal class OpenFileEditor : UITypeEditor
{
private readonly OpenFileDialog ofd = new OpenFileDialog();
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
ofd.FileName = value.ToString();
ofd.Filter = "Text File|*.txt|All Files|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
return ofd.FileName;
}
return base.EditValue(context, provider, value);
}
}