2017-02-02 12 views
0

formBが閉じた後で、formAが一部のデータを更新する必要がある状況があります。これを行う簡単な方法はありますか?Windowsフォーム:別のフォームが終了するまで待つ

private void newProjectButton_Click(object sender, EventArgs e) 
{ 
    NewProjectForm newProjectForm = new NewProjectForm(); 
    newProjectForm.Show(); 

    //wait for newProjectForm to close... 

    DataTable dt = Util.ToDataTable(ProjectParticipantTable.GetUserProjectsDetails(Util.currentUserId)); 
    userProjectsDGV.DataSource = dt; 
} 
+5

あなたは 'ShowDialog'を探していますか? –

+0

私は 'formB'はモーダルではないと思いますか?あまりにも明白な解決策に見えます。 – Setsu

+0

Rezaは 'Show()'を 'ShowDialog();に変更することを提案しているので、' newProjectForm'が閉じられるまで他の現在開いているフォームでは何もできません。 – JohnG

答えて

1

あなたはShowDialog()方法を利用して、そしてDialogResult財産をmanagheする必要があります。そのためには、NewProjectFormの一部にDialogResultを設定する必要があります。これは、ボタンでプロパティを設定したり、単にコードで設定することができます。それはあなたの親フォームにDialogResultを発射し、あなたは、この方法で行うことができますフォーム

終了します:あなたはまた、このアプローチを使用することができますモーダルにShowDialogモードを使用しない場合

using(NewProjectForm newProjectForm = new NewProjectForm()) 
{ 
    if(newProjectForm.ShowDialog() == DialogResult.OK) 
    { 
     DataTable dt = Util.ToDataTable(ProjectParticipantTable.GetUserProjectsDetails(Util.currentUserId)); 
     userProjectsDGV.DataSource = dt; 
    } 
} 
+0

[フォームが閉鎖された後にフォームを廃棄する必要がありますか?](http://stackoverflow.com/a/39501121/3110834) –

+0

@RezaAghaeiあなたはそれを持っています。私は良い習慣に追いつくために私の答えを更新しました – NicoRiff

1

を。

シングルトンだけが必要な場合は、newProjectForm変数をスタティックシングルトンにします。

関連する問題