2014-02-11 65 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的做到这一点:

​​