我目前正在开发一个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);
}
答案 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限制为私有)。