2012-02-15 14 views
2

2つのフォームがあり、2つ目のフォームが閉じられるとFormClosingメソッドを使用して最初のフォームが閉じられるようにリンクしています。FormClosingメソッドを呼び出さずにフォームを非表示にする

この問題は、2番目のフォームを非表示にしたい場合、自動的に最初のフォームを閉じます。実際にFormClosingメソッドを呼び出さずにフォームを隠す方法はありますか?

"Visible = false"および "Hide()"を使用すると、FormClosingメソッドが呼び出されたように見えます。

ありがとうございました。

+3

'Visible = False;'? – Blorgbeard

+0

関連:http://stackoverflow.com/a/2021708/945456 –

答えて

2

それは以下のように開始されるように、私は私のプログラムを変更:

 MainForm mainForm = new MainForm(); 
     mainForm.Show(); 
     Application.Run(); 

の代わりに:私はかどうかを確認しFormClosingイベントを追加したフォームのそれぞれにおいて

 Application.Run(new MainForm()); 

ユーザーはアプリケーションを閉じることを選択しました。この場合、プロンプトは、その確認を求めるためにユーザーに表示されます。

private void ImageSelect_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (e.CloseReason == CloseReason.UserClosing) 
     { 
      if (DialogResult.No == MessageBox.Show("Are you sure you wish to exit?", "Exit Confirmation", MessageBoxButtons.YesNo)) 
       e.Cancel = true; 
      else { Application.Exit(); } 
     } 
    } 

アプリケーションこれで、アプリケーション内の任意のフォームから閉じることができます。

2

の場合はとなりますが、この場合はフォームがメモリに残り、そのフォームによる割り当て済みのリソースはすべてメモリに残ります。

これが問題の場合は、アーキテクチャを改訂することをお勧めします。

0

form.Hide()を使用します。

これは実際にフォームを閉じずにフォームを隠すだけです。

0
this.Hide(); 

または

this.Visible = false; 
-1

あなたはリサイズを使用する場合の方法隠す()は、あなたが探しているものでなければならない形成しています。

+0

私はHide()を使用すると、まだFormClosingメソッドを呼び出します。 – Jpin

+0

おそらく、_FormClosing_メソッド内のプロパティFormClosingEventArgs.CloseReason(https://msdn.microsoft.com/en-us/library/system.windows.forms.formclosingeventargs.closereason%28v=vs.110%29.aspx)を使用して、 hwatにすることを決定する。 – brgerner

関連する問題