Я создаю программу, в которой пользователь входит в Form1 для доступа к Form2. Находясь в Form2, метка вверху должна отображать имя пользователя и должность. Поэтому мне придется передать переменные name и position из 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; }
}
В Form1 под методом Button_Click:
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());
}
}
Наконец, в форме 2:
Form1 f=new Form1();
string name = f.name;
string position = f.position;
Label2.Text = "Welcome! Now logged in as User " + name +" ("+ position + ").";
Я бы хотел, чтобы Label2 прочитал: «Добро пожаловать! Теперь вы вошли как [insert name] ([insert position])». Вместо этого он просто оставляет эти слоты имен и позиций пустыми.