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();