2011-04-04 24 views
2

如果在C#中創建Windows UserControl,則通過「Controls」集合公開該UserControl的「子」控件。也就是說,用戶控件的使用者可以引用Controls集合並訪問內部控件。如何防止UserControl的使用者看到控件的子控件?

有沒有辦法來compartmentalise這樣的設計使得消費者不能訪問任何還沒有被用戶控件的設計者明確暴露?

示例:我有一個用戶控制其,在內部,有兩個TextBox控件。我的用戶的消費者可以寫:

MyControl1.Controls[0].Enabled = false; 

有沒有一種方法(例如)具有「控制」屬性返回一個空的集合,使得消費者不能與用戶控制的內部運作撥弄?

這似乎是合理的用戶控件應公開其「控制」會暴露幾乎所有的屬性,但不是這給進入其內部運作的集合。

感謝, 羅斯

回答

0

不知道這是否會在所有的情況下工作,但它似乎在非常簡單的測試。

public partial class UserControl1 : UserControl 
{ 
    private ControlCollection _controls; 

    public UserControl1() 
    { 
    InitializeComponent(); 

    _controls = new ControlCollection(this); 
    } 

    new public ControlCollection Controls 
    { 
    get 
    { 
     return (_controls != null ? _controls : base.Controls); 
    } 
    } 
} 

當然,小心將需要用戶應該控制要訪問自己的「控制」收集(和將不得不使用base.Controls)

相關問題