掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
オーバライドで? (ID:121446)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>一番、最初のレスに記述していますが、Buttonコントロールです。 なるほどなるほど。それはごめんなさいでした。最初の質問から いまいち納得いってなかった部分がやっと納得できました。(^^;) (↑だから放置してたの(汗)) MyBase がボタンなのね?。今、分かりました。Form とばかり思ってました。 というのも、 『フォームに乗ってるコントロール側でフォームのイベントを拾う』 というのが概念としてちょっと特異です。親子関係がイマイチです。 問題がある…かも。 まず、通常の(継承してない)コントロールにどういう処理が行われて いるかはご存知ですか?。これは " Windows フォーム デザイナで生成されたコード " の部分で行われています。ここで、InitializeComponent という 関数で、フォームの上に存在するコントロールが New されていますね?。 では、コンポーネントの消去はどうなっていますか?。Dispose をオーバーライドしてますね?。Dispose で自分のつかんでいるメモリ (コントロール)を破棄しているわけです。 この考え方からいくと開放処理は Dispose で行うのが良いでしょう。 で、親のフォームを閉じる処理に依存するのではなく『誰かから(フォームとは 限らない)Dispose (破棄)命令を受けた時に自分の保持している開放すべき メモリを開放する』という考え方が良いでしょう。コントロールの 内部で処理が閉じておくべきです。 また、Control クラスのベースである Component クラスの解説を 読んでおいて下さい。 [Component クラス] http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemComponentModelComponentClassTopic.asp Finalize ではなく Dispose の方が良さそうです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.