Aujourd'hui, je suis tombé sur un problème avec le contrôle PropertyGrid, car je voulais éditer les propriétés d'un objet ainsi que ses sous-objets. Toutefois, j'ai eu quelques soucis, car la PropertyGrid ne permet pas (de base) d'éditer les sous-objets et ceux-ci apparaissent grisés.
Voici mon code:
using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApplication { public partial class PropertyGridTest : Form { public PropertyGridTest() { InitializeComponent(); this.propertyGrid1.SelectedObject = new Car(); } } public class Driver { public string Name { get; set; } public bool HasDriverLicence { get; set; } } public class Car { public Car() { this.Driver = new Driver() { Name = "Johannes Fetz", HasDriverLicence = false }; this.Color = Color.Red; this.Kind = "Sedan"; } public string Kind { get; set; } public Color Color { get; set; } public Driver Driver { get; set; } } }qui donne le résultat suivant:
Après quelques recherches, j'ai trouvé comment résoudre ce problème. En effet, il suffit d'indiquer à la PropertyGrid que "Driver" est un objet "Expandable". Pour cela, il faut ajouter un using :
using System.ComponentModel;et un attribut au dessus de la classe "Driver" :
[TypeConverterAttribute(typeof(ExpandableObjectConverter))] public class Driver {Ce qui donne le résultat suivant: