登录第二个表单后如何传递名称变量

时间:2019-03-29 00:24:27

标签: c# sql database login

我正在创建一个程序,该程序涉及用户登录Form1才能访问Form2。在Form2上时,顶部的标签需要显示用户的名字和职位。因此,我必须将名称和位置变量从Form1传递到Form2才能显示它。不幸的是,当我尝试执行此操作时,它不会显示。

当前,该程序设置为检查数据库中是否有输入的登录凭据,而OleDBDataReader会查找与这些凭据关联的名称和位置。我尝试声明一个公共静态字符串,以便将该变量传递给Form2,但它只返回一个空值。

在表格1的Button_Click方法上方:

    private string _name;
    public string name
        {
            get
            { return _name; }
            set
            { _name = value; }
        }

     private string _position;
     public string position
        {
            get
            { return _position; }
            set
            { _position = value; }
        }

在Button_Click方法下面的Form1上:

try
        {

            if (textBox1.Text == string.Empty || textBox2.Text == string.Empty)
            {
                MessageBox.Show("Invalid! Please enter a valid Username and/or Password.");
            }

            cmd = new OleDbCommand("SELECT * FROM Staff Where Username='" + textBox1.Text + "' AND Password='" + textBox2.Text + "'", sql);
            if (sql.State == ConnectionState.Closed)
            {
                sql.Open();
                i = (int)cmd.ExecuteScalar();
            }

            using (OleDbDataReader read = cmd.ExecuteReader())
            {
                while (read.Read())
                {
                    _name = (read["FirstName"].ToString());
                    _position = (read["Position"].ToString());
                }
            }
            sql.Close();

            if (i > 0)
            {
                MainHub enter = new MainHub();
                this.Hide();
                enter.Show();
            }
            else
            {
                MessageBox.Show("Invalid! Please enter the correct username or password.");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

最后,在Form2上:

Form1 f=new Form1();
string name = f.name;
string position = f.position;
Label2.Text = "Welcome! Now logged in as User " + name +" ("+ position + ").";

我希望Label2阅读“欢迎使用!现在以[插入名称]([插入位置])登录。”相反,它只是将这些名称和位置槽留为空白。

1 个答案:

答案 0 :(得分:0)

您可以创建一个类并使用静态变量 例如 创建一个名为“ G”的类,并在其上写一个变量:

G.name = "Your Name";

然后您可以根据需要从应用程序中访问它!

WITH ROLLUP