2012-07-16 72 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

相關問題