2012-01-12 163 views
0

Possible Duplicate:
Best way to access a control on another form in WinForms?訪問標籤從另一個類

我知道這是一個眩目的明顯的問題,但我一個C#新手,覺得有點混亂,所以任何幫助,將不勝感激......

我有一個mainform和第二個表單,我們稱它爲form2。 form2上有一些標籤。我想從mainform class/cs表格中控制這些標籤的文本。無論我嘗試什麼,我似乎都無法訪問它們。我已經把它們中的一部分公佈了,我仍然無法在「mainform」類中「看到」它們。

mainform是wpf(就像項目一樣)。 form2是一個常規的winform。

如果有人會幫助我,我會永遠感激。

感謝,

+2

http://stackoverflow.com/questions/8566/best-way-to-access-a-control-on-another-form -in-winforms – 2012-01-12 10:40:51

+0

謝謝Uwe,我已經那麼做了,並且不理解它。 – sotiris 2012-01-12 10:47:22

+0

如果你不明白[「創建一個屬性」](http://stackoverflow.com/a/8573/366904),現在是時候得到一本關於C#的書並學習語言...... – 2012-01-12 10:53:38

回答

8

和你的標籤是私有的,它們可以從只有所有者的形式訪問。不要試圖將它們改爲公開,這是一種錯誤的做法(公衆成員是邪惡的)。

添加一個更新標籤的公共方法,以便從第二個表單中訪問它。

窗口2:

public void SetTextForLabel(string myText) 
{ 
    this.myLabel.Text = myText; 
} 

的MainForm:

myForm2Instance.SetTextForLabel("my text"); 
+0

謝謝ken,當我把你在mainform中建議的代碼放到「SetTextForLabel」下面時,會出現一條紅色的波浪線,並出現以下錯誤:錯誤'System.Windows.Forms.Form'不包含' SetTextForLabel「,並且沒有找到接受類型爲」System.Windows.Forms.Form「的第一個參數的擴展方法」SetTextForLabel「(您是否缺少using指令或程序集引用?) – sotiris 2012-01-12 10:55:26

+0

錯誤消息表示您正在嘗試使用一個「Form」類型的實例,而不是你自己的「Form2」類型。在你的錯誤周圍發佈幾行,以便我們幫助... – ken2k 2012-01-12 11:04:19

+0

謝謝Ken。在類的頂部,我聲明瞭表單 - public static Form WaitFormV; ---然後在一個進度改變的事件進一步下來,我有--- WaitFormV = new DBWaitForm(); WaitFormV.ShowDialog(); WaitFormV.SetTextForLabel(「my text」); – sotiris 2012-01-12 11:13:29