我正在使用C#在Visual Studio 2015中构建表单应用程序。首先,我使用2个文本框和1个按钮创建了一个用户登录表单。我想要做的就是将包含用户名的文本框中的值传递给一个标签,该标签位于另一个名为MainMenu的表单中。这是我对登录表单按钮的代码:
private void button_login(object sender, EventArgs e)
{
MainMenu username = new MainMenu();
username.Value1 = textBox1.Text;
this.Hide();
MainMenu ss = new MainMenu();
ss.Show();
}
我要传递值的MainMenu表单的代码如下:
private string value1 = string.Empty;
public string Value1
{
set { value1 = value; }
get { return value1; }
}
private void MainMenu_Load(object sender, EventArgs e)
{
label7.Text = Value1;
}
正如您所看到的,我已经在MainMenu表单中创建了一个可以从登录表单访问的属性,因此我可以直接在MainMenu表单中传输textbox1中的值。问题是label7中的文本在运行时保持为空,我无法理解原因。我错过了我的代码或者我做错了什么吗? 任何建议将不胜感激
答案 0 :(得分:1)
MainMenu username
和MainMenu ss
是两个不同的实例(同一个MainMenu
类,但这是一个细节)。
您正在设置Value1
实例的memeber变量username
,但您正在显示ss
实例。
考虑一下这段代码
private void button_login(object sender, EventArgs e)
{
MainMenu username = new MainMenu();
username.Value1 = textBox1.Text;
this.Hide();
usename.Show();
}
答案 1 :(得分:1)
您正在使用两个不同的MainMenu对象,正确的代码应该类似于
MainMenu username = new MainMenu();
username.Value1 = textBox1.Text;
this.Hide();
username .Show();
答案 2 :(得分:1)
您实际创建了两个表单:username
和ss
。您设置了Value1
的{{1}},但是您显示的username
未设置ss
。所以你应该展示Value1
:
username
另外,提示,为变量使用更好的名称。下面的代码完全相同,但更容易理解:
private void button_login(object sender, EventArgs e)
{
MainMenu username = new MainMenu();
username.Value1 = textBox1.Text;
this.Hide();
username.Show(); // and not ss.Show();
}
答案 3 :(得分:1)
就像解决问题的方法完全不同:
另一种选择是在项目中创建一个静态类,它将容纳您想要重用的任何变量。
因此,假设您的静态类是调用Globals,在成功登录后,您将设置所需的变量,即Globals.Username = textBox1.Text。
然后,只要您再次需要该值,就可以使用Globals.Username访问它。
答案 4 :(得分:1)
当您需要将变量值从一个表单传递到另一个表单时,请相应地编写第二个表单的构造函数,并在创建第二个表单的对象时传递该值。
If your app requests this permission Facebook will have to review how your app uses it.
When submitting for review, please be clear as to why age_range is not sufficient for your use case.
为OOP的每个实例创建公共属性并在另一个类中访问它们是OOP的不良做法。