尝试从其他表单调用字符串时出现NullReferenceException
本文关键字:NullReferenceException 字符串 调用 其他 表单 | 更新日期: 2023-09-27 17:58:17
我有2个表单,我想做的是从form1上的TextBox中获取一个值,然后将其分配到form2中的其他变量中,这样我就可以在form2中重用它,而无需从form1 重新调用它
Form1(这是一个登录表单)
public void LoginBttn_Click(object sender, EventArgs e)
{
cnnctString = "SERVER=" + server + ";" + "DATABASE=" + DB + ";" + "UID=" + uid + ";" + "PASSWORD=" + pwd + ";";
connection = new MySqlConnection(cnnctString); //The one that i want to fetch for the 2nd form
if (OpenConnection() == true)
{
Form2 menu = new Form2();
menu.Visible = true;
this.Visible = false;
}
}
在表单1中,我初始化了服务器、数据库,UID和pwd(它们中的每一个都有值,pwdID的值都是从Textbox中获取的),并且OpenConnection也返回true。
然后在上
Form2
public Form1 oF;
public MySqlConnection NTD()
{
MySqlConnection F = oF.connection;//It's Highlighted in this line.
return F;
}
public MySqlCommand cmd = new MySqlCommand();
public void A9_Click(object sender, EventArgs e)
{
A9.Text = "X";
string query = "UPDATE orders SET Client=" + Name + " , Stat='1' WHERE No='A9'";
cmd.CommandText = query;
cmd.Connection = NTD();
cmd.ExecuteNonQuery();
}
名称值是从同一表单上的文本框中提取的
没有编译错误和其他编译前错误
但是,当我成功地运行它并单击按钮A9时,它就会抛出NullReferenceException
我不确定连接是否为null,因为我可以成功登录并显示表单2。
我错过什么了吗?你知道这个吗?
我是个新手,不知道怎么了。如果可以的话,如果需要预付款,请尽可能简单地描述。
谢谢。
您似乎忘记了将oF
变量设置为Form1
的实例。这导致oF是null
,因此尝试访问connection
成员变量会引发异常。解决这个问题的一种方法是在构造函数中设置它:
public Form2(Form1 parentForm)
{
if(parentForm == null)
throw new ArgumentNullException("parentForm");
this.oF = parentForm;
}
//...
Form2 menu = new Form2(this);
您可以通过为高亮显示的行(您提到的行)设置一个断点来调试此问题,并检查null
是什么。