我正在创建一个程序,该程序涉及用户登录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阅读“欢迎使用!现在以[插入名称]([插入位置])登录。”相反,它只是将这些名称和位置槽留为空白。
答案 0 :(得分:0)
您可以创建一个类并使用静态变量 例如 创建一个名为“ G”的类,并在其上写一个变量:
G.name = "Your Name";
然后您可以根据需要从应用程序中访问它!
WITH ROLLUP