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: