2013-07-17 2 views
0

Form1과 Form2의 두 가지 형식이 있습니다. 두 필드 파일 이름, 파일 경로 및 클릭하면 양식 2 걸리는 단추가 있습니다. Form 2에는 파일 이름과 파일 경로 및 OK 버튼이있는 DataGrid가 있습니다. Form1의 행에 이미 파일 경로와 파일 이름이 있으면 Form2에 채워야하며 Form2에서 해당 데이터를 조작하고 Ok 버튼을 클릭하면 데이터는 형식 1로 업데이트해야합니다. C#을 처음 사용하기 때문에이 작업을 수행하기가 어렵습니다. 이 문제를 해결하는 방법에 대한 조언을 제발 주시겠습니까두 양식 간의 데이터 그리드에 데이터 전달

답변

1

두 가지 데이터 그리드보기를 '공용'으로 설정하는 것이 좋습니다. 그런 다음 한 데이터 격자에서 셀을 종료하면 해당 셀이 '더티'인지 확인하고 두 격자에 대한 업데이트를 처리합니다. 한 폼이 다른 폼에서 시작되면 한 업데이트는 this.ParentForm.dgFileNames.Rows ....를 읽습니다. 다른 폼은 this.frmSubordinate.dgFileNames.Rows ...

더 나은 방법은 public 두 폼의 메서드를 호출하고 한 폼의 행이 업데이트 될 때마다 다른 폼의 해당 업데이트 메서드를 호출합니다.

현실적으로 각 양식에는 다른 양식의 메서드를 호출하는 추가 및 업데이트에 대한 사용자 정의 이벤트가 있어야합니다. 이는 그리드에 업데이트가 입력되는 상황에서 두 양식이 항상 열려 있다고 가정합니다. 여기에는 이벤트를 통해 전달 될 eventData의 인터페이스 및 기본 클래스 정의가 포함됩니다.

0

양식의 모달 결과를 사용하여 쉽게 수행 할 수 있습니다. Form1에에서

public partial class Form2 : Form 
{ 
private string _currentValue; 

//Property to get value from Form1 
public string CurrentValue 
{ 
    get { return _currentValue; } 
    set { _currentValue = value; } 
} 

public Form2() 
{ 
    InitializeComponent(); 
    //set the dialog result to be as OK when button is clicked 
    button1.DialogResult = System.Windows.Forms.DialogResult.OK; 
} 

public string getSelectedValue() 
{ 
    return dataGridView1[<the field name you need to get>, dataGridView1.CurrentRow.Index].Value.ToString(); 
} 
} 

로 전화 :

이상적 형식 2는 다음과 같이해야한다

Form2 form2 = new Form2(); 
form2.CurrentValue = <Your Value from Form1>; 

If (form2.DialogResult() == DialogResult.OK) 
{ 
textBox1.Text = form2.getSelectedValue(); 
}