如何在C#中从另一个表单更新一个表单上的标签?

0 .net c# forms winforms

我想更新Form1from的标签Form2.所以这就是我所拥有的:

// Form1
public string Label1
{
    get { return this.label1.Text; }
    set { this.label1.Text = value; }
}


// Form2
private void button1_Click(object sender, EventArgs e)
{
    Form1 frm1 = new Form1();
    frm1.Label1 = this.textBox1.Text;
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)

所以上面的代码不起作用.但是,当我添加以下内容时:

frm1.Show();
Run Code Online (Sandbox Code Playgroud)

this.Close();
Run Code Online (Sandbox Code Playgroud)

在Form2代码中,Form1显然是再次打开(两个窗口).但是我希望它在同一个窗口中更新,所以我认为this.Close()是不必要的.

有人有主意吗?

Cod*_*ray 6

在该button1_Click方法中,您实际上是在创建实例Form1并设置该Label1新实例的属性.这就解释了为什么添加时屏幕上会显示第二个实例.如果仔细查看第二个副本,您会看到它的标签显示正确的值,但该表单的原始副本保留其原始值.Form1frm1.Show();

相反,我假设您要做的是设置已经显示在屏幕上的现有实例的Label1属性.为了做到这一点,您将不得不获得对现有表单对象的引用.Form1

因此,这成为一个简单的问题"如何在两个对象(表单)之间传递数据",这在Stack Overflow上已被无数次询问过.查看这些相关问题的答案: