2012-07-16 59 views
0

我的Form2上有一个DataGridView,form1上有一个文本框。当我点击其中一个DataGridView行时,我想在form1的texbox中显示DataGridView副本的每个单元格。将DataGridView窗体form2的一个单元格传递给form1中的文本框

我试图改变文本框的类型为“公共”,然后我在窗口2中写道的:

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复制。

请帮帮我。

回答

1

这是一个常见的错误:

Form1 fr1 = new Form1(); 

创建Form1的一个新的实例和VAR FR1不会是指原来Form1中显示。
要解决此类问题,您需要将Form1的原始实例传递给Form2的构造函数,将引用保存在全局实例var中,并在form2中使用该引用。例如:

CALLING: 窗体2 FR2 =新Form2的(这个)

FORM2的构造函数:

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(); 
} 
+0

坦克的帮助。 – 2012-07-18 18:25:51

+0

你写过* _caller.textBox1.Text *吗? – Steve 2012-07-18 21:02:14

相关问题