关于.net的一问题

我设置了两个窗体,一个命名为Login,另一个命名为Phonebookmanage,当Login窗体的dialogresult为OK时就会打开第二个窗体:

img

我在Login窗体中设置了一个textbox控件,再设置一个username变量去获取textbox里的值:

string username = txtUsername.Text;

然后在Phonebookmanage窗体中设置了一个全局变量username1:

public string username1;

现在我想将Login中username获取到的值传给Phonebookmanage的username1中,代码如下:

 Phonebookmanage pbm = new Phonebookmanage();
            pbm.username1 = username;

运行时发现在运行Login窗体时值已经传递过去了:

img

可是接着运行Phonebookmanage窗体时我发现username1的值又为空了:

img


请问这是为什么?如何解决?谢谢

  1. 在Login窗体类中,声明属性UserName;
  2. 在Login窗体类中,定义OK按钮的鼠标按下处理函数,在这个函数中给UserName赋值。注意一定要在关闭窗口前设置UserName的值,否则UserName的值不会是最新的。
    public class Login
    {
    public string UserName{get;set;}
    private void OKButten_Clicked()
    {
        UserName=txtUsername.Text;
        DialogResult = DialogResult.OK;
        this.close();
    }
    }
    
  3. 在main函数的if语句中,将login.UserName赋值给新建的Phonebookmanage对象的username1字段。