0

C# で記述された次のユーザー コントロールを考えてみましょう。

class MyControl : UserControl {
  MyControl Left { get; set; }
  MyControl Right { get; set; }
}

デザイン時にフォームに配置された MyControls を「接続」できる方法を探していたので、クライアントはこれらの接続を手動でコーディングする必要がありませんでした。出来ますか?はいの場合、どのように?

現在、私のクライアントは次のようなことをしなければなりません:

myControl1.setLeft(myControl2);
myControl1.setRight(myControl3);

ありがとう

4

1 に答える 1

0

IExtenderProvider に行くことができると思います。ExtenderProvider は、拡張可能なコントロールにプロパティを追加します。ここで例を見つけることができます:

http://msdn.microsoft.com/en-us/library/system.componentmodel.iextenderprovider.aspx

enum AttachDirection { Right, Left, None }

[ProvideProperty("IsRequired", typeof(Control))]
class MyControl : UserControl, IExtenderProvider
{ 
    MyControl Left { get; set; } 
    MyControl Right { get; set; }

    public bool CanExtend(object extendee)
    {
        if (extendee is MyControl)
            return true;
        return false;
    }

    public void SetAttachTo (Control ctrl, AttachDirection direction)
    {
         if(direction == AttachDirection.Right)
             this.setRight(ctrl);
         else if (direction == AttachDirection.Left)
             this.setLeft(ctrl);
    }
    //And so on ...
} 
于 2012-10-24T21:29:56.877 に答える