|
2008/07/05(Sat) 23:57:52 編集(投稿者) 2008/07/05(Sat) 23:56:40 編集(投稿者)
アンマネージリソースを使っているとしたら使っているのはフォームなので、フォームのDisposeメソッドをオーバーライドしてやるべきなんじゃないでしょうか。 Clickイベントで呼び出した際にDisposeするのはまた別の問題では?Formクラス自体が使用しているアンマネージリソースを解放するためにも呼ばなければいけないわけですし。 なので、上の例では、前者も後者も両方必要・・・という認識ですが、間違っていますでしょうか。
ところで、ツールパレットにダイアログを入れるというのは、OpenFileDialogのようなものということで間違いないのでしょうか。そうすると、呼び出し元のコントロール(Componentあたりを継承)をつくって、それにフォームを呼び出してもらう という実装になるのではないかと思いますが。 # Clickイベント(などのコード上)で呼び出すだけのダイアログであれば、そのときそのときにコードでnewすれば良いだけなので、ツールパレットに表示させる必要はないですよね。
ところで ■No21610 (Azulean さん) に返信 > デフォルトのFormだと×ボタンで閉じると勝手にDisposeされてしまい、再利用できませんが、大丈夫ですか? 間違っていたら申し訳ないのですが、フォームがDisposeされるのは明示的にDisposeする(usingブロックを抜けるのも含む)か、GCで回収されたときだと思うのですが、いかがでしょうか。 # そうでないと一度閉じたダイアログを再表示したり、そのデータにアクセスすることができなくなってしまう・・・
|