2009-02-10 97 views
0

我在我的項目form1和form2中有2個窗體。當我點擊一個按鈕,在Form1我運行此代碼:訪問新窗體上的控件

Form tempform = new Form2(); 
tempform.Show(); 

在我的Form2的代碼,我有一個標籤,我現在需要更改文本。 如何訪問標籤?

我想:

tempform.label1.value = "new text" 

而且沒有工作,我甚至嘗試使用Controls集合訪問,但我想我搞砸這件事。有什麼方法可以訪問該標籤嗎?或者有什麼方法可以將值傳遞給新窗體,然後讓窗體改變標籤文本。

感謝

回答

7

如果標籤值應該只設置一次,是創建窗體時,則使用Form2的構造是這樣的:

public Form2(string labelValue) 
{ 
    _labelValue = labelValue; 
} 

,然後調用構造函數時創建表單。

替代地,如果在所述形式的壽命標籤的變化,使一個公共屬性:

public string LabelValue 
{ 
    get { return label1.Text; } 
    set { label1.Text = value; } 
} 

另外我建議命名的參數和/或屬性,以反映值的含義,例如「titleText」而不是「labelValue」。 Form2可以決定如何顯示信息(標題欄,標籤,文本框等),Form1不必擔心這一點。

編輯:消耗LabelValue屬性是這樣的:

Form2 newForm = new Form2(); // Assign object to a Form2 instead of Form 
newForm.LabelValue = "new text"; 
newForm.Show(); 
2

控件都默認protected訪問。您可以將其更改爲public,或者您可以向form2類添加方法/屬性來設置標籤和調用(後一種方法通常更適合保留封裝,並且因爲設計人員可能想要覆蓋您的公開更改)。

+0

我加入此方法: 公共無效SetLabelValue(串英勇) { label1.Text =英勇; } 而得到這個錯誤: 「System.Windows.Forms.Form中」不包含「SetLabelValue」,沒有擴展方法 – AntonioCS 2009-02-10 17:34:54

+0

確保您添加的功能,正確的形式,把它在正確的定義方式,並form2重新編譯之前使用它在form1 – 2009-02-10 17:41:44

相關問題