リストまたは注文をラップする新しいタイプを作成する場合、新しいタイプに Editor 属性を設定すると、任意の種類の winform をポップアップできます。
たとえば、次のようなクラスで List をラップします。
[Editor(typeof(OrderListEditor), typeof(UITypeEditor))]
class OrderList
{
public OrderList() { Orders = new List<order>(); }
public List<order> Orders { get; set; }
}
ユーザークラスのプロパティを持つ:
class User
{
...
public OrderList CustomerOrder { get; }
}
あとは、PropertyGrid でユーザーが [...] ボタンを押したときに必要な処理を実行するロジックを記述するだけです。
class OrderListEditor : UITypeEditor
{
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return System.Drawing.Design.UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
OrderList list = (OrderList)value;
Console.WriteLine("There are " + list.Orders.Count + " orders");
return list;
}
}