我的Form2上有一个DataGridView,form1上有文本框。当我单击其中一个DataGridView行时,我想在form1的texbox中显示DataGridView副本的每个单元格。
我尝试将文本框的类型更改为“public”,然后我在form2中编写了这个:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
return;
Form1 fr1 = new Form1();
fr1.textBox1.Text = "123";
Form2.ActiveForm.Close();
}
但没有在form1的texbox1中复制。
请帮助我。
答案 0 :(得分:1)
这是一个常见的错误:
行
Form1 fr1 = new Form1();
创建Form1的新实例,var fr1不引用显示的原始Form1 要解决此类问题,您需要将Form1的原始实例传递给Form2的构造函数,将引用保存在全局实例var中,并在form2中使用该引用。例如:
CALLING: Form2 fr2 = new Form2(this)
FORM2 CONSTRUCTOR:
public class Form2 : Form
{
private Form1 _caller = null;
public Form2(Form1 f1)
{
_caller = f1;
}
}
DATAGRIDVIEW_CELLCLICK
private void dataGridView1_CellClick(....)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
return;
_caller.textBox1.Text = "123";
this.Close();
}