2012-10-24 21 views
0

考虑用C#以下用户控制:在Visual Studio中设计时连接/绑定用户控件?

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

我一直在寻找一种方式,能够“连接” MyControls把在设计时在窗体上,所以我的客户就不必码这些连接手动。可能吗?如果是,如何?

目前我的客户将不得不做这样的事情:

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

感谢

+0

无论哪种方式,输入将需要指定,对不对?所以看起来你的客户端总是会有_something_,例如传入构造函数并调用'set *'。如果“你的”控件属于预期类型,那么你可以让API用户指定容器并进行一些自动查找。 –

+0

我希望能够做到这一点,没有任何类型的编码。我甚至不确定这是可能的。 –

+0

Connect是什么意思?当用户在他的工具箱中添加控件DLL时,他将通过鼠标拖放并移动它。那么需要手动设置左侧和右侧? –

回答

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 ... 
} 
+0

嗯,有趣。但从我读过的内容来看,这似乎不是我正在寻找的东西。根据我的理解,只有当您希望对表单上不同范围的控件执行横切关注时,才会有所帮助。事实并非如此。我正在寻找一种方式来绑定不同的拖放式风格的控制方法,如果这是一个现实的目标,那就是实现目标。 –

+0

你的意思是你想用拖放来连接这些控件,而不是设置一些属性? – VahidNaderi

+0

是的。 12345677777 –

相关问题