私のアプリでは、フォームの新しいインスタンスをその場で作成し、Form.Show()を使用してフォームを表示します(非モーダル)。新しいフォームをすぐに処理しないで処分する適切な方法は何ですか?
private void test_click(object sender, EventArgs e)
{
var form = new myForm();
form.Show();
}
ただし、コードクラッカーは、これらのフォームを削除する必要があることを伝えています。そこで、私はそれらを "using"ステートメントでラップしましたが、開かれた直後に閉じます。
using (var form = new myForm())
{
form.Show();
}
少数の例では、私が唯一のレポートを表示する新しいウィンドウを開くてるので、私は、Form.ShowDialog()を使用する必要はありません。私はそれらがモーダルである必要はありません。あなたはそれを示し、各フォームのOnFormClosedEventに加入しますフォームマネージャのsomekindを実装することができ
答えは明らかです。 "コードクラッカー"があなたを誤って案内します。 'using'を使わないでください....適切なときにフォームを廃棄してください... –
ここで@ L.Bに同意する必要があります。ウィンドウを閉じることはDispose()が行うべき正しいことです。定義上、正しく実装されたDispose()メソッドは、配置されたオブジェクトを使用不可能な状態のままにしておく必要があります。 – EJoshuaS
この[スレッド]を読む(https://social.msdn.microsoft.com/Forums/windows/en-US/cc4acf77-6e7e-46a6-992d-702e314acbdf/howwhen-to-call-dispose-when-using-a) -modeless-dialog?forum = winforms)は、処分を心配する必要はないはずです。非モーダルフォームは自動的にGCされます。私はTask Manangerを見ながらテストし、メモリは再利用されています。 – javon27