2010-02-11 55 views
0

我的項目是用c#編寫的。我有我設計的用戶控件。在那個用戶控件中,我希望能夠通過控件所在的窗體來查看窗體上的所有其他控件。在用戶控件中檢查包含表單的反射。 C#

我該如何去做這件事?我用反射去通過DLL的,但不是這樣的事情。

總結:我的用戶控件放置在一個窗體上,我希望我的用戶控件能夠通過窗體上的所有其他控件進行onLoad查看(有時我想將其限制在同一個容器中,而不是整個窗體,但是我可以計算出以後)。

我也打開想法,不使用反射,如果任何人有任何。

謝謝!

編輯:

所以,我想簡單地翻翻父控件和什麼IM沒有工作要做,這是我的錯了嚴重解釋它上面。

讓我再提供一些細節。

我知道,在主窗體上會出現一個ContainerListView控制,現在當你添加列的創建的containerlistview ContainerListviewColumnHeaders。它們的聲明顯示在表單的initalizeComponent()中。我想要做的是在我的用戶控件中我想查看錶單並找到所有的ContainerListViewColumnHeader,但是因爲它們不是'Control'類型(它們是'Component'),所以它們在前面的方法中不顯示。 詢問Containerlistview不是一個選項。

+0

難道你不能簡單地通過'Parent'屬性檢索父窗體(可能需要訂閱'ParentChanged'事件),然後訪問此窗體的'Controls'集合? – stakx 2010-02-11 20:37:59

+0

關於您在編輯中提供的其他信息:AFAIK,表單不一定具有對Forms Designer中添加的所有_components_的引用。一些組件是通過引用表單來初始化的,但不是相反的。 – stakx 2010-02-11 20:59:51

+0

因此,使用由Reed提供的方法我認爲你可以找到ContainerListView控件,它很可能具有像「Columns」這樣的屬性,並且每一列都會有類似「Header」的內容。只是一個假設。 – 2010-02-11 21:19:36

回答

5

不需要反思。

請看UserControl.ParentForm - 這是託管UserControl的窗體。從那裏,您可以迭代(遞歸)到Form.Controls

+0

+1 ...打敗我幾秒鐘。 – 2010-02-11 20:37:31

+0

編輯我的描述以提供更多信息 – 2010-02-11 20:53:01

相關問題