2
myDialog d = new myDialog(); 
d.ShowDialog();

ダイアログが何らかの入力を処理したら、

this.Close();

ダイアログクラス内から。

次に、メイン ウィンドウに戻り、変数を確認します。

if (d.OK = true)
{
//do stuff
}

プログラムを使用すると、これらのダイアログがいくつか作成されますが、これは問題ありませんか? または、同じダイアログを参照するメイン フォームで静的変数を使用する必要がありますか? 違いはありますか?

4

3 に答える 3

5

このパターンを使用すると、ダイアログは常に正しく破棄されます

using(myDialog d = new myDialog())
{
     if(DialogResult.OK == d.ShowDialog())
     { 
         //do stuff (for example, read some property values on the dialog)
         if(d.ExecuteSomeAction == true)
              // Do some action -> call a database query or something.....
     } 
}

静的変数を使用して、ダイアログが破棄されないように維持します (その場合、「状態条件」を追跡する必要があるか、ユーザーに最後の入力を提案する必要がある場合を除き、this.Hide()notを呼び出す必要があります。私の意見では、悪い習慣です。this.Close()アプリを閉じるときは、静的変数を閉じる際にも細心の注意を払う必要があります。

于 2012-08-02T11:54:59.323 に答える
1

一度破棄されたフォームは再利用できません。

于 2012-08-02T11:54:31.623 に答える
1

これを考慮することもできます:

using (myDialog d = new myDialog())
{
   d.ShowDialog();

   if (d.OK)
   {
      // do stuff
    }
}

最後のブレースの後、ダイアログが適切に破棄され、すべてのメモリが解放されていることを確認できます。このように、ダイアログを好きなだけ使用できます。を使用することusingは良い方法であり、IDisposableインターフェイスを実装するすべてのオブジェクトで使用できます。

ステートメントの使用を参照してください。

于 2012-08-02T11:55:59.507 に答える