首页 > 解决方案 > 将用户输入文本框中的值分配给另一个表单

问题描述

我是 C# 新手,我正在尝试创建一个将信息传递给程序其他形式的登录名。下面是我的 LoginForm.cs,我试图获取输入到 txtUserID.text 的用户 ID 并将其传递给另一个类。我已经尝试过创建一个全局变量,但什么也没发生。

public partial class frmLogin : Form
    {

        public String getUserID;
        public frmLogin()
        {
            InitializeComponent();
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {

            Login login = new Login();
            DbConn conn = new DbConn();
            Employee emp = new Employee();

            //assign the txtbox value to variables
            String userID = txtUserID.Text;
            String pass = txtPassword.Text;
            
            //check first the authetincation of the AD
            bool checkADAuthentication = login.isADauthenticated(userID, pass);
            if (checkADAuthentication == true)
            {
                //get the name indicated on the AD
                String name = emp.getADEmpName();
                MessageBox.Show("Welcome " + name, "Login Successful", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                //check if the connection to the SQL Database is establish
                bool connDB = conn.isConnectionEstablish();
                if(connDB == true)
                {
                    
                    MessageBox.Show("Connection Successful", "DB Connection", MessageBoxButtons.OK);
                    emp.getIdDetails(userID); //assign ID to function getIDDetails
                    getUserID = userID; //assign the User ID input from textbox to method getUser.
                    MessageBox.Show(getUserID, "User signed in", MessageBoxButtons.OK);
                    StatusViewForm statView = new StatusViewForm();
                    this.Hide();
                    statView.Show();
                }
                else
                {
                    MessageBox.Show("Connection not successful", "Connection Failed", MessageBoxButtons.OK);
                }
            }
            else
            {
                MessageBox.Show("Login Failed", "Login Unsuccessful", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }

这是我的 StatusView 表单,我试图在其中获取输入到我的 LoginForm.cs 的 txtUserID.txt

private void StatusViewForm_Load(object sender, EventArgs e)
        {

            frmLogin loginForm = new frmLogin();
            String loggedUser = loginForm.getUserID;
            MessageBox.Show(loggedUser, "Who is logged in?", MessageBoxButtons.OK);

            QueryExecute taskEmp = new QueryExecute();
            DbConn dbConn = new DbConn();
            DataTable dt = new DataTable();

            //String userID = taskEmp.getEmployeeDetails(userID: loggedUser); ;
            String query = taskEmp.getTaskDetails(loggedUser);
            MessageBox.Show(query, "Query", MessageBoxButtons.OK);

            SqlDataAdapter da = new SqlDataAdapter(query, dbConn.getDbConnection());

            dbConn.getDbConnection().Open();
            da.Fill(dt);
            dbConn.getDbConnection().Close();

            dgvTaskView.DataSource = dt;

        }

问题是每次我运行程序时都无法获得 txtUserID.txt 上的值。你可以看到我创建了一个MessageBox.show()来检查变量是否被传递给 StatusViewForm.cs 但它仍然是空白的。有没有办法在 C# 中做到这一点?

标签: c#

解决方案


当然,您不会从您的公共变量中获取该公共变量,LoginForm.cs因为您正在创建LoginForm.cs

你可以在你的StatusViewForm.cs. 使用它的constructor

编辑:我忘记为构造函数添加 InitializeComponent

private string LoggedUser;
public StatusViewForm(string LoggedUser)
{
    InitializeComponent();
    this.LoggedUser = LoggedUser;
}

然后LoggedUser从你的调用StatusViewForm_Load()

private void StatusViewForm_Load(object sender, EventArgs e)
{
    `MessageBox.Show(LoggedUser, "Who is logged in?", MessageBoxButtons.OK);`
}

然后,如果您要调用StatusViewForm.csin LoginForm.cs。你会这样做:

MessageBox.Show("Connection Successful", "DB Connection", MessageBoxButtons.OK);
emp.getIdDetails(userID); //assign ID to function getIDDetails
getUserID = userID; //assign the User ID input from textbox to method getUser.
MessageBox.Show(getUserID, "User signed in", MessageBoxButtons.OK);


StatusViewForm statView = new StatusViewForm(userID);
this.Hide();
statView.Show();

推荐阅读