2016-09-23 2 views
-3

ここは私の質問です。フォーム1から、ユーザーが更新アイテムをクリックしたときにフォーム2が開きますが、フォーム1は開いたままになります。この時点で、私はフォーム1を偽にしておきたいと思います。しかし、フォーム2が閉じると、フォーム1の有効化が再び真でなければなりません。私はこれを行うことができない...ここに私のコードです:このような状況で別のフォームを有効/無効にする

private void Form3_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      Form1 form1 = new Form1(); 
      form1Here.Enabled = true; 
     } 

1形式で:

(更新した後、更新項目にある)フォーム2では
private void btnEditItem_Click(object sender, EventArgs e){ 
    Form3 form3 = new Form3(); 
    form3.Show(); 
    this.Enabled = false; 

} 

別のForm1を開きます。問題は、「私は「フォーム1を開かずにもう一度元に戻す」とはどういうことですか?可能であれば、いくつかのサンプルを提供してください。感謝

+1

を実装しているためあなたがform2.FormClosedにハンドラをアタッチまたは(にShowDialogを使用することができます)の代わりに、該当する場合はShow() –

+0

'form2.ShowDialog()'を使用して 'form2'をモーダルとして呼び出さないのはどうですか?この方法では、form1は開いていますが、form2が閉じるまで使用できません。 Btw:「Form3」とは何ですか?あなたの質問に簡潔にお答えください。 – HimBromBeere

答えて

1

フォームにハンドラを添付します。

Form3 form3 = new Form3(); 
form3.FormClosed += new FormClosedEventHandler(frm3_FormClosed); 
form3.Show(); 

private void frm3_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    this.Enabled = true; 
} 

それともShowDialog

ウィンドウを開き、新しく開いたウィンドウが閉じているときにのみ返すことができます。

+0

ありがとう、私を救うために天国から送られた男LOL – PoorGrammer

+0

あなたのために働くなら、それを受け入れられた答えとしてマークすることができます。 –

0

あなたの説明から、モーダルダイアログボックスが必要なようです。 MSDN Modal and Modeless Dialog Boxesから

:モーダルダイアログボックスでは、 アプリケーションの残りの部分で作業を続行する前に(非表示またはアンロード)閉じなければならない

これは、フォーム1が開いている場合ことを意味しフォーム2はモーダルダイアログボックスとして表示されますが、フォーム1は表示されたままですが、無効になっています。フォーム2を閉じるまで、何もできません。 "フォーム1は無効で、フォーム2がフォームを閉じる1が再度有効になります。

コード:

private void btnEditItem_Click(object sender, EventArgs e) 
{ 
    using (Form3 form3 = new Form3()} 
    { 
     var dlgResult = form3.ShowDialog(); // show form 3 as a modal dialog box 
     // halt this procedure until form3 is closed 
     // handle the result of form3: 
     if (dlgResult == DialogResult.OK) 
     { 
      var x = form3.SomePropery; 
      ProcessDialogOutput(x); 
     } 
    } 
} 

usingステートメントは必要ありませんが、それはきちんとしたプログラミングで、たForm3がIDisposableを

関連する問題