稍后在传递到另一个表单之前存储值

时间:2012-12-10 18:50:59

标签: c# winforms variables store

我目前正在开发一个C#visual studio Windows应用程序。我有一个问题是从一个表单(Form1)中取一个文本框值并将其存储在一个变量中,以便在下一个表单(Form2)中使用。我不想立即显示值,因此我需要一种方法可以将值存储在后台并且以后能够使用它。我该怎么办?

我尝试过这种方式,但它不起作用,任何人都可以告诉我为什么? form2中的返回值为空。

Login.cs(登录页面)

    public string uname;

    private void LoginButton_Click(object sender, EventArgs e)
    {
        string userName = this.LoginUsernameTextBox.Text;
        uname = userName;
    }

Form2.cs

    private void CheckLoginUsername_Click(object sender, EventArgs e)
    {
    Login login = new Login();
    MessageBox.Show("The value of uname is:" + login.uname);
    }

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是Form2没有引用用户正在与之交互的Login的同一个实例,您正在创建一个新实例(从不向用户显示)然后抓取超出这个价值。

您尚未显示这些表单之间的互动程度(如果您有,则表示您错过了相当多的表格)。

应该看起来像这样:

在Form2中:

private void Form1_Load(object sender, EventArgs e)
{
    Login loginForm = new Login ();

    loginForm.ShowDialog();

    string username = loginForm.UserName;
}

然后登录表单应该是这样的:

public string UserName { get; private set; }

这将允许您在内部设置值(提交/关闭表单时)并从外部读取。

对于公开领域而言,这被认为是不好的做法;最好使用属性(因此,除此之外,你可以做我在这里所做的事情,并将setter限制为私有)。