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 回答