C#中窗口值传递的问题咨询

Form1(方案一):

    private void TextBox1_Click(object sender, EventArgs e)
    {
       FrmHotKey f2 = new FrmHotKey();
        f2.Form2Value = "Ok"; //给Form2的textBox1赋值初始Ok 
        f2.Show();

    }

    private void button3_Click(object sender, EventArgs e)
    {
        FrmHotKey f2 = new FrmHotKey();//改变Form2的textBox1赋值初始Ok 
        f2.Form2Value = "Owwk";
    }

Form1(方案二):

   FrmHotKey f2 = new FrmHotKey();
    private void TextBox1_Click(object sender, EventArgs e)
    {

        f2.Form2Value = "Ok"; //给Form2的textBox1赋值初始Ok 
        f2.Show();

    }

    private void button3_Click(object sender, EventArgs e)
    {

       //改变Form2的textBox1赋值初始Ok 
        f2.Form2Value = "Owwk";
    }

Form2中:
public string Form2Value
{
get
{
return this.label3.Text;
}
set
{
Sts = value;
}
}
第一种方案不能正确的把修改后的值传递给Sts,第二种方案可以。请问一下这是为什么。我希望能在 form2里面实施更新form1传递的数据,有更好的方案请提供一下。

http://bbs.csdn.net/topics/360140208/
我自己的分享。如果采纳,可以发给你源代码。

1、方案一new了两个FrmHotKey类型的对象,分别都给这两个对象的Form2Value赋了不同的值,但是你值show出了第一个对象,当然只能看到f2.Form2Value = "Ok"; 你可以在
FrmHotKey f2 = new FrmHotKey();//改变Form2的textBox1赋值初始Ok
Form2Value = "Owwk";//后面添加
f2.Show();
2、你方案2修改的Form2Value是你一开始new的窗体对象,也就对同一个对象操作,所以显示的值是改变的

望采纳