从文本框检索输入文本到另一个表单时出错

时间:2013-03-30 15:41:31

标签: c# textbox

我有一个登录表单“frmLog()”,其中包含用户名和密码的文本框,现在我想从用户名文本框中获取输入文本。请参阅下面的代码,不要混淆我使用的是mysql数据库,因此其他语法代码并不重要。

这是登录表单“frmLog()

 private void button1_Click(object sender, EventArgs e)
        {
            ApareceCrudLib a = new ApareceCrudLib("localhost", "root", "", "cashieringdb");
            string user = txtLogin.Text;
            string pass = txtPassword.Text;
            string query = "SELECT * FROM register WHERE username='" + user + "' AND password=MD5('" + pass + "')";
            int result = a.Count(query);
            if (result == 1)
            {
                frmMain main = new frmMain();
                main.ShowDialog();
                this.Dispose();
            }
            else
            {
                MessageBox.Show("Login Failed! Try Again");
                txtLogin.Text = "";
                txtPassword.Text = "";
            }
        }

这是我想要检索代码“frmMain()”的另一种形式。请参阅public void dataLog(),这是我尝试从frmLog获取输入值的代码部分。

private void frmMain_Load(object sender, EventArgs e)
{
    a = new ApareceCrudLib("localhost", "root", "", "cashieringdb");
    loadDataGridView_Main();
    dataLog();
}
public void loadDataGridView_Main()
{
    dgvMain.Rows.Clear();
    List<string>[] detailList = a.mysqlSelect("Select * From sales");
    for (int i = 0; i < detailList.Length; i++)
    {
        dgvMain.Rows.Add(detailList[i][0], detailList[i][1], detailList[i][2], detailList[i][3]);
    }
}
public void dataLog()
{
    frmLog kk = new frmLog();
    txtLog.Text= kk.txtLogin.ToString();
}

这是错误的结果

enter image description here

结果必须是来自frmLog()示例“client123”的用户名。你觉得这里有什么问题?

3 个答案:

答案 0 :(得分:2)

kk.txtLogin.ToString(),返回表示当前对象的字符串。在这种情况下,您当前的对象是TextBox

而是显示TextBox,您应该显示TextBox的值。 将该代码更改为:

kk.txtLogin.Text;

<强>更新

如果要在txtLogin中显示frmLog中的frmMain值,可以在frmLog中声明存储txtLogin值的静态变量。< / p> frmLog中的

public static String LOGIN_USER = "";

然后在button1_Click

    if (result == 1)
    {
      LOGIN_USER = txtLogin.Text;
      frmMain main = new frmMain();
      main.ShowDialog();
      this.Dispose();
    }
frmMain_Load中的

    public void dataLog()
    {        
       txtLog.Text= frmLog.LOGIN_USER;
    }

答案 1 :(得分:0)

在您的数据记录中()Methode是第一个错误。

替换:txtLog.Text= kk.txtLogin.ToString();

使用:txtLog.Text= kk.txtLogin.Text;

在:

 public void dataLog()
 {
        frmLog kk = new frmLog();
        txtLog.Text= kk.txtLogin.ToString();
 }

您创建一个新的frmlog对象而不显示它,因此文本框为空。您应该在用户输入后从文本框中检索文本。

答案 2 :(得分:0)

之所以如此,是因为您正在尝试从frmLog();

的新实例中读取数据

在你frmMain中,不要写这个:

frmLog kk = new frmLog();

而是在表单类

中创建公共引用

public frmLog kk;

然后,在你的frmLog中,

frmMain main = new frmMain();
main.kk=this; 
main.ShowDialog();

这将以第二种形式创建对您的第一个表单的引用。