2014-02-11 112 views
1

我有2種形式,即Form1 & Form2。訪問其他表單值

在Form1中我有一個名爲「HumanName」的字符串,這個「HumanName」有一個來自textbox.text的值。我也有按鈕名爲Button1。

在Form2中,我有一個名爲Label1的標籤。

這就是我想要完成的。 當我打/按Button1的,將Label1.Text=HumanName

Form1中:

HumanName = textbox.text, Button1 

窗體2:

Label1.Text = HumanName 

這裏是我的代碼:

public partial class Form1 : Form 
{ 
    private void PersonalInformationToForm2() 
    { 
     HumanName = textBox_Name.Text; 
    } 

    private void Button1_Click(object sender, EventArgs e) 
    {   
     PersonalInformationToForm2(); 
    } 
} 

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 

     Label1.Text=HumanName; //I need the value of HumanName from Form1   
    } 
} 
+0

看[應用程序。 OpenForms](http://msdn.microsoft.com/en-us/library/system.windows.forms.application.openforms%28v=vs.110%29.aspx)。您可以找到您打開的表單並根據需要訪問其屬性/方法。 – James

+0

對於您的場景可能是過度殺傷,但通常情況下,您可以將控件綁定到包含HumanName屬性(帶有HumanNameChanged事件)的相同源。然後,所有的綁定控件將更新他們的顯示屬性更改(即使有更多的實例form1和form2) –

+0

我認爲[它] [1]你搜索。 ) [1]:http://stackoverflow.com/questions/6382750/adding-an-event-handler-for-a-control-in-child-form-from-parent-form- in-c-sharp – Gabor

回答

1

在Form1封裝的控制,在房產

public string GetTextboxText {get{ return Textbox1.Text;}} 

在其他形式的

var formOne = (Form1)Application.OpenForms["Form1"]; 
Label1.Text = formOne.GetTextboxText; 
0

的窗體2創建一個構造函數,需要人名。

然後在按下按鈕在Form1中,創建窗體的新實例,並在Textbox1.Text

通過
0

在窗體2以下列方式創建一個構造

public void Form2(string name) 
{ 
    Label1.Text=name; 
} 

野老從Form1中我們可以發送通過以下方式值

string HumanName=textbox.text; 
Form2 frm2=new Form2(HumanName); 
frm2.Show(); 
+0

這不是一個構造函數,你應該重載構造函數,如:public Form2(string name){Label1.Text = name;}' – Max

0

創建Form1的一個實例是用於訪問窗體2,你可以做這樣的:

public static Form2 Instance; 

public Form2() 
{ 
    InitializeComponent(); 
    Instance = this; 
} 

在屬性中將Label1的修飾符設置爲true。

當打Form1上是Button1的做到這一點:

​​