通过表单传递值c#

时间:2016-11-02 12:23:59

标签: c# winforms

我正在使用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中的文本在运行时保持为空,我无法理解原因。我错过了我的代码或者我做错了什么吗? 任何建议将不胜感激

5 个答案:

答案 0 :(得分:1)

MainMenu usernameMainMenu 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)

您实际创建了两个表单:usernamess。您设置了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的不良做法。