0

データソースにコレクションが含まれている場合、winformプロパティグリッドは新しいウィンドウをポップアップします。ウィンドウをポップアップするときに独自のwinformを使用したいです。

例: Class User{ int ID ;int Name; list<order> CustomerOrder;}注文ページをポップアップするとき、アイテムを追加するときに別のデータソースから存在する注文リストから注文を選択できるようにしたい。

これは本当ですか?またはオープンソースの拡張コントロールまたは 3 番目のコントロール ?

4

1 に答える 1

1

リストまたは注文をラップする新しいタイプを作成する場合、新しいタイプに 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;
    }
}
于 2012-12-11T23:17:40.387 に答える