2012-07-16 2 views
0

DataGridView는 Form2에, 텍스트 상자는 form1에 있습니다. DataGridView 행 중 하나를 클릭하면 Form1의 texboxes에 DataGridView 복사본의 모든 셀을 표시하려고합니다. Form1의 texbox1 복사DataGridView 폼의 form2 중 하나의 셀을 form1의 텍스트 상자에 전달

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

아무것도 :

은 내가 Form2를이를 썼다 다음 '공개'로 텍스트 상자의 유형을 변경했습니다.

도와주세요.

답변

1

IT는 일반적인 실수 :

라인

Form1 fr1 = new Form1(); 

가 Form1의 새로운 인스턴스를 생성하고 var에 FR1 원래 Form1에 표시를 의미하지 않습니다.
이 문제를 해결하려면 Form1의 원래 인스턴스를 Form2의 생성자에 전달하고 전역 인스턴스 var에 참조를 저장 한 다음 해당 참조를 form2에 사용해야합니다.

부름 : Form2를 FR2 = 새로운 형식 2 (이)

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

탱크 예를 들어. –

+0

* _caller.textBox1.Text *를 작성 했습니까? – Steve

관련 문제