2012-10-24 23 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 –

相關問題