2011-06-27 8 views
3

私は処分する必要があるそのコンストラクタにいくつかの使い捨てリソースを作成するフォームを持っています。ただし、C#フォームデザイナは、Designer.csファイルにDispose()メソッドを生成していますが、このメソッドにはユーザーフックの種類はありません。だから私はどのように私は典型的なIDisposableパターンを実装するはずだと紛失している。System.Windows.Formの派生クラスにリソースを配置する場所

このフォームは作成されても表示されないことがあるので、Closeイベントを使用することは役に立ちません。

これらのオブジェクトはIComponentsではないため、this.componentsに追加することはできません。

このクリーンアップコードはどこに置いて、フォームが破棄されたときに実行されるのですか?

+1

プロジェクトテンプレートに間違いがあります。修正が簡単で、デザイナーファイルからソースコードファイルにメソッドを切り取って貼り付けるだけです。 –

+0

フォームを変更するとフォームデザイナーはそれを置き換えないでしょうか?私はちょうどそれがDesigner.csファイル全体を書き換えたと仮定していました。 –

+2

いいえ「Windowsフォームデザイナで生成されたコード」領域以降のものだけが重要です。 –

答えて

6

Designer.csファイルからDispose()メソッドをソースコードファイルに移動することができます。それを変更して、フォームクラスに使い捨てメンバーのコールを追加します。これは、デザイナファイルを編集することができますが、 "Windowsフォームデザイナで生成されたコード"と表示された#領域内のコードから離れておく必要がある場合はほとんどありません。

1

フォームとコントロールは、使用するリソースを処分するために使用できる「Disposed」イベントを提供します。

2

私はしばしばそれについて問題に遭遇したことはありませんが、私はしばしばこれについて疑問に思っています。 Disposedイベントを使用することはできますが、私が逃したDisposeにフックするより良い方法があるかもしれません。

関連する問題