=====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); } }