2011-11-28 189 views
1

假設我創建了一個窗口形式Form.cs。它有一些控件(label1,label2,button1,button1等)。我還在Form.cs下創建了一個新窗口New_Form.cs。現在我想訪問New_Form.cs中的label1,label2,button1。我怎樣才能做到這一點?如何從另一個Windows窗體訪問一個Windows窗體控件?

+2

這已經被問到[一遍又一遍](http://stackoverflow.com/search?q= [c%23] + [winforms] + pass + values + to + another + form)。 – Otiel

回答

1

雖然這是不好的設計,你可以以另一種形式,使它們公開,然後訪問他們喜歡這種訪問屬性:

Form1 frm = new Form1(); 
Form1.button1.Visible = false; 

而且,這裏是屬於你的問題的MSDN頁面

http://msdn.microsoft.com/en-us/library/f6525896%28v=vs.90%29.aspx

+0

這隻會讓他訪問在窗口本身聲明的窗口屬性。如果一個窗口* Z *在某些* X *表單中創建,並且您需要從* Y * –

+3

訪問該窗口如果您知道如何做到這一點,請務必給出更好的答案:) – annonymously

+0

我不知道這就是爲什麼我問你.....我也沒有使用Windows窗體,但很想知道如何實現。所以,我問你認爲你可能也知道dat ... –

1

您可以通過在Parent表單中將其設置爲公共屬性來訪問所需的屬性。不知道爲什麼你會想要按鈕,如果你想要點擊執行一些東西,那麼你應該將邏輯封裝到單獨的方法中,然後他們進行調用。

如果你有較少的細節來傳遞,然後爲新形式會接受這些值

ChildForm child = new ChildForm([label1], [label2]) 

ChildForm child = new ChildForm([parent form reference]) // so you could access require components 
2

我不想冒犯建設者,但我認爲使用另一種形式的控制不是一個好的設計。

在我oppinion它是不是好夫妻一個類(在這個問題form1)至實現另一類form2'的`(管制。如果由於某種原因,不得不改變內部設計(例如顯示不同控件的數據),你必須改變另一個類,這使得編碼(當然還有錯誤搜索)相當困難

如果需要在兩個數據之間交換數據類,我寧願使用publioc屬性,在內部設計中,你可以將它們附加到一個控件,但這個「耦合」保持在同一個類中)

相關問題