Как передать имя переменной после входа во вторую форму - PullRequest
0 голосов
/ 29 марта 2019

Я создаю программу, в которой пользователь входит в 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])». Вместо этого он просто оставляет эти слоты имен и позиций пустыми.

1 Ответ

0 голосов
/ 29 марта 2019

Вы можете создать класс и использовать статические переменные например: Создайте класс с именем «G» и напишите в нем переменную:

public static string name = '';

тогда вы можете получить к нему доступ из своего приложения, когда захотите!

G.name = "Your Name";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...