C# の Show() と ShowDialog() の違い

黄舟
黄舟オリジナル
2017-02-25 10:53:102878ブラウズ

WinForm での A.Form の表示
フォームを表示するには 2 つのメソッドがあります:
Form.ShowDialog メソッド (フォームはモーダル フォームとして表示されます)
Form.Show メソッド (フォームはモードレス フォームとして表示されます)

2 つの具体的な違いは次のとおりです。
1. Form.Show メソッドを呼び出した後、Show メソッドの背後にあるコードはすぐに実行されます。
2. Form.ShowDialog メソッドを呼び出した後、このメソッドの背後にあるコードは実行されません。ダイアログ ボックスが閉じるまで

ヒント:

1. モーダル表示後、ポップアップ ウィンドウは呼び出しウィンドウのすべてのメッセージ応答をブロックします。
通話ウィンドウは、ポップアップ ウィンドウが終了した後にのみ続行できます。
モーダル ウィンドウが「閉じられた」後、ウィンドウの戻り​​ステータスやウィンドウのサブコントロールの値など、モーダル ウィンドウ内の情報を読み取ることができます。

MSDN の showdialog の説明:

フォームがモーダル ダイアログ ボックスとして表示されている場合、[閉じる] ボタン (フォームの右上隅にある X の付いたボタン) をクリックすると、フォームが非表示になり、 DialogResult プロパティを DialogResult に設定します。モードレス フォームとは異なり、.NET Framework は、ユーザーがダイアログ ボックスの [フォームを閉じる] ボタンをクリックしたとき、または DialogResult プロパティの値を設定したときに、Close メソッドを呼び出しません。その後、ダイアログ ボックスの新しいインスタンスを作成しなくても、フォームを非表示にして再表示できます。ダイアログ ボックスとして表示されるフォームは閉じられないため、アプリケーションでフォームが必要なくなった場合は、フォームの Dispose メソッドを呼び出す必要があります。

つまり、非モーダルウィンドウが閉じられると、closeメソッドが呼び出され、その後、ウィンドウリソースを再利用するためにdisposeメソッドが呼び出されます。そのため、ウィンドウが閉じられた後、ウィンドウ情報が再利用されます。は入手できません。モーダル ウィンドウが閉じられると、close メソッドも destroy メソッドも呼び出されず、ウィンドウはまだ存在し、リソースを占有しているため、ウィンドウが使用されなくなった場合でも引き続きウィンドウ関連の情報を取得することができます。手動で解放

2. 非モーダル表示後、
はポップアップウィンドウと呼び出しウィンドウを自由に切り替えることができます。
呼び出しウィンドウで show メソッドを呼び出した後、次のコードをすぐに実行できます。
非モーダルウィンドウが閉じられると、ウィンドウのすべてのリソースが解放され、ウィンドウは存在せず、ウィンドウに関する情報も取得できなくなります。

3. したがって、表示されるフォームがシングルトン モードを使用している場合、各ショーが完了した後、フォームを閉じた後 ()、2 番目のショーが表示されます: 解放されたオブジェクトにアクセスできません。オブジェクト名:「XXXX」。この時点で、close() を変更してフォームを非表示にする必要があります。

上記は C# Show() と ShowDialog() の違いです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。