我想更新Form1
from的标签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()
是不必要的.
有人有主意吗?
在该button1_Click
方法中,您实际上是在创建新实例Form1
并设置该Label1
新实例的属性.这就解释了为什么添加时屏幕上会显示第二个实例.如果仔细查看第二个副本,您会看到它的标签显示正确的值,但该表单的原始副本保留其原始值.Form1
frm1.Show();
相反,我假设您要做的是设置已经显示在屏幕上的现有实例的Label1
属性.为了做到这一点,您将不得不获得对现有表单对象的引用.Form1
因此,这成为一个简单的问题"如何在两个对象(表单)之间传递数据",这在Stack Overflow上已被无数次询问过.查看这些相关问题的答案: