C# 将输入文本从文本框检索到其他表单时出错

C# 将输入文本从文本框检索到其他表单时出错,c#,textbox,C#,Textbox,我有一个登录表单“frmLog()”,其中有用户名和密码文本框,现在我想从用户名文本框中获取输入文本。请看下面的代码,不要混淆我使用的是mysql数据库,所以其他语法代码并不重要 这是登录表单“frmLog()” 这是我要检索代码“frmMain()”的另一个表单。请参阅public void dataLog(),这是我试图从frmLog获取输入值的代码部分 private void frmMain_Load(object sender, EventArgs e) { a = new A

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

这是登录表单“
frmLog()

这是我要检索代码“
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();
}
private void frmMain\u加载(对象发送方,事件参数e)
{
a=新的AparecRecrudlib(“本地主机”、“根目录”、“出纳数据库”);
loadDataGridView_Main();
数据日志();
}
public void loadDataGridView_Main()
{
dgvMain.Rows.Clear();
List[]detailList=a.mysqlSelect(“从销售中选择*);
for(int i=0;i
这是错误的结果

结果必须是
frmLog()
示例“client123”中的用户名。您认为这里有什么问题?

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

您应该显示
文本框的值,而不是显示
文本框的值。
将该代码更改为:

kk.txtLogin.Text

更新

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

frmLog
中:

public static String LOGIN_USER = "";
然后在
按钮1中单击

    if (result == 1)
    {
      LOGIN_USER = txtLogin.Text;
      frmMain main = new frmMain();
      main.ShowDialog();
      this.Dispose();
    }
frmMain\u加载中

    public void dataLog()
    {        
       txtLog.Text= frmLog.LOGIN_USER;
    }
在datalog()方法中,是第一个错误

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

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

在:


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

之所以如此,是因为您试图从
frmLog()的新实例中读取数据

在您的
frmMain
中,不要写以下内容:

frmLog kk=new frmLog()

而是在表单类中创建公共引用

public frmLog kk

然后,在你的frmLog中

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

这将在第二个表单中创建对第一个表单的引用。

我不知道您是如何做到这一点的,但我会研究您的代码,因为它可以完美地工作。非常感谢你!
 public void dataLog()
 {
        frmLog kk = new frmLog();
        txtLog.Text= kk.txtLogin.ToString();
 }
frmMain main = new frmMain();
main.kk=this; 
main.ShowDialog();