【发布时间】:2023-01-18 05:12:53
【问题描述】:
大家好,
我用这个但是我得到一个错误。
private void button1_Click(object sender, EventArgs e)
{
// When i use this,
// -------------------------
// Form1 frm1 = new Form1();
// frm1.ShowDialog();
// -------------------------
// This works for sure...
// But i don't wanna open that already open form one more time.
// So i use as u see it below.
Form1 frm1 = (Form1)this.Owner;
int MyTotal, a, b;
a = Convert.ToInt32(TxtPrice.Text);
b = Convert.ToInt32(TxtQty.Text);
MyTotal = a * b;
frm1.dataGridView1.Rows.Add(TxtName.Text,TxtCode.Text,TxtPrice.Text,TxtMt.Text,TxtQty.Text,MyTotal);
this.Close();
// But i get error and it says:
// System.NullReferenceException: 'Object reference not set to an instance of an object.'
}
谁能告诉我为什么这不起作用? 先感谢您。
【问题讨论】:
-
你这样做是错的。对话框不必关心调用表单。只需通过属性公开数据 - 如果合适,只读属性 - 然后调用表单可以获取数据并在
ShowDialog返回后根据需要使用它。 -
如果您按照我上面的说明进行操作,那么这将是无关紧要的,但是,关于您提出的具体问题,您首先是如何显示对话的?我怀疑你实际上并没有设置
Owner,在这种情况下,从它那里得到除了null之外的任何东西都是没有意义的。