2017-08-17 34 views
0

我怎麼做到這一點,當我點擊Form1(主窗體)中的一個按鈕時,它將打開Form2,同時也更改標籤的文本(Label4)。如何使點擊按鈕更改其他形式的標籤文本?

我對按鈕當前代碼:

Admin objFrmAdmin = new Admin(); 
this.Hide(); 
objFrmAdmin.Show(); 

我不想改變形式我只想補充它,當我點擊該按鈕打開的形式,它也將放映碼更改Form2中標籤上的文本。

+0

做您嘗試使用form.button1.label =值 –

+0

是的,但訪問控制形式:

//Constructor for Admin form public Admin(string newLabelText) { this.lblLabelToChange.Text = newLabelText; } 

通過調用它由於某些原因無法從Form1代碼找到Form2上的任何控件。 –

+1

行 - 需要將控件設爲Public。 – ainwood

回答

0

您使用對象heirarchy直接更改標籤。

Admin objFrmAdmin = new Admin(); 
this.Hide(); 
objFrmAdmin.lblLabelToChange.Text = "Your Test Here"; //<= this line. 
objFrmAdmin.Show(); 

如果標籤沒有出現在intellisense中,那麼您可能需要將其公開。另一種方法是使用構造函數,並傳遞新的測試:

Admin objFrmAdmin = new Admin("The new text"); 
+0

雖然你的第一個建議將解決OP的問題,但是控制'public'通常不推薦使用,因爲一個表單由另一個表單控制。這會導致混淆,更高的可維護性等。 – Nino

+0

謝謝!第一個代碼適合我:) –

3

變化Admin形式構造,這樣的事情:

//add parameter text 
public Admin(string text) 
{ 
    InitializeComponent(); 
    //change label 4 text 
    this.Label4.Text = text; 
} 

改變你initalizing Admin形式是這樣的方式:

Admin objFrmAdmin = new Admin("text to show on label"); 
this.Hide(); 
objFrmAdmin.Show(); 

編輯:另一種方式來實現即到在管理表單上公開方法並調用它。所以,離開構造不帶參數,就像是和公開方法的Admin形式,像這樣:

public void ChangeText(string text) 
{ 
    this.Label4.Text = text; 
    //put other code here if needed, ie. hide buttons or something like that 
} 

現在,只需調用該方法你初始化你Admin表後。

Admin objFrmAdmin = new Admin(); 
this.Hide(); 
objFrmAdmin.ChangeText("text to show"); 
objFrmAdmin.Show(); 
+0

這也工作感謝這個尼諾! :D –

相關問題