0

MSDN のドキュメントによると、ShowDialog()で表示されるフォームを閉じる操作では、フォームが非表示になるだけです。その後 ShowDialog() を呼び出すと、フォームが再表示されます。

これは正確には当てはまらないようです。ツリービューのあるフォームがあります。チェック状態は ShowDialog() の呼び出し間で保持されますが、ユーザーが行ったノード展開はデフォルト状態にリセットされます。また、Load イベントも毎回実行されています。したがって、フォームを単に「隠す」以上のことをしているようです。誰でも何が起こっているのか分かりますか?

ありがとう

4

1 に答える 1

1

私はこの問題を自分で経験しました。何らかの理由で、モーダル フォームを呼び出しForm.Hideたり設定したりすると、少なくともいくつかのケースで呼び出されます。それを回避するために、不透明度をゼロに設定しました。代わりに使用することもできます。visible = falseForm.CloseForm.Show

モーダルダイアログの振る舞いをイメージすると、やや直感的です。親ウィンドウをブロックします。したがって、非表示にすると、ユーザーが操作できるアクティブなウィンドウがなくなります。FWIW、親が再びアクティブになるという動作であるべきだったと思います。いつもそうであるとは限りません。

于 2013-03-19T13:27:54.167 に答える