2010-04-19 4 views
1

두 가지 형태가 있습니다. 첫 번째 양식은 mainForm입니다. 두 번째 양식 (saveForm)을 열면 맨 위에 표시됩니다. 이 양식을 닫으면 mainForm의 특정 코드가 실행되기를 원합니다. 이것이 이것이 일어나는 올바른 방법이라고 생각하십니까?public DialogResult ShowDialog() 도움!

내가 닫고 mainForm로 돌아 가면 saveForm의 코드 :

private void btnSaveDetails_Click(object sender, EventArgs e) 
    { 
     Delivery d = new Delivery(txtNameBox.Text, txtAddressBox.Text, txtDayBox.Text, txtTimeBox.Text, txtMealBox.Text, txtInstructionsBox.Text, txtStatusBox.Text); 
     mainForm.myDeliveries.Add(d); 
     this.Close(); 
    } 

어떤 아이디어?

+0

당신이 정교한 : 당신이 양식을 호출에

다음을 수행합니다? –

+0

지구상에서 무엇을 의미합니까? – SLaks

+0

나는 너무 애매했다 질문을 변경합니다. – sark9012

답변

1

을 당신은 설정해야 대화 상자 양식의 DialogResult 속성. 코드에서 명시 적으로 또는 대화 상자의 결과를 양식의 단추로 assing합니다. 전화

private void btnSaveDetails_Click(object sender, EventArgs e) 
{ 
    Delivery d = new Delivery(
     txtNameBox.Text, txtAddressBox.Text, txtDayBox.Text, 
     txtTimeBox.Text, txtMealBox.Text, txtInstructionsBox.Text, 
     txtStatusBox.Text 
    ); 
    mainForm.myDeliveries.Add(d); 
    this.DialogResult = DialogResults.OK; 
} 

필요가 없습니다 Close() this.DialogResult을 설정하는 것은 당신을 위해 당신이 ShowDialog()를 사용하여 대화 상자를 호출하면 것을 않습니다.

var frm = new MyForm(); 
if (frm.ShowDialog() == DialogResults.OK) { 
    // do what you want to do on success. 
} 
+0

버튼으로 폼을 닫고 해당 폼을 닫고 mainform으로 돌아 가면 코드 조각을 실행하고 싶습니다. 나는 약간의 코드로 나의 질문을 바꿀 것이다. – sark9012

+0

@ 루크 : 편집을 참조하십시오. – AxelEckenberger

3

반환 된 DialogResult를 사용하여 응용 프로그램에서 일부 변경을 수행 할 수 있습니다. 예를 들어 사용자에게 모든 파일을 삭제할지 여부를 묻는 대화 상자를 제공하고 대화 상자에서 예 버튼을 클릭하여 응답 한 경우 파일을 삭제합니다. DialogResult

가 UPDATE : DialogResult를를 사용하고 ShowDialog를 여기에서 찾을 수 vcan 방법에 대한

추가 정보가 게시 된 코드가 "아이"양식에서 인 경우에, 당신이 지금까지했던 것은 아마도 괜찮습니다, 하지만, 여전히 폼이 인 DialogResult 을 제공해야합니다.) 후 코드 에,

this.DialogResult = DialogResult.OK; 

그런 childForm.ShowDialog (호출을 DialogResult를을 확인 : 예를 들어, this.Close()하기 전에 다음을 수행 할 수있다. DialogResult.OK와 같으면 사용자가 확인을 클릭했음을 나타내는 작업을 수행 할 수 있습니다.

(그리고, 보조 노트에, 폐기는()는 ShowDialog를()를 사용 할 때 호출 하지이며, 필요한 경우, 자신까지 일을 정리해야합니다.)