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; }
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.
[Browsable(true)]
[ReadOnly(true)]
[Category("Commun")]
Ce nom s'affiche aussi en haut d'une colonne d'un DataGridView
.
[DisplayName("Mon nom")]
[Category("Description perso")]
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); } }