それはalread定義されていますので、あなたは通常、フォームの破棄して下さいメソッドをオーバーライドすることはできませんForm.Designer.csファイルに保存します。フォームに独自のディスポジションロジックを追加する方法は少しあります。サブフォームのリストを保持してのMainFormのコンストラクタに次の行を追加します
public class Disposer : Component
{
private readonly Action<bool> disposeAction;
public Disposer(Action<bool> disposeAction)
{
this.disposeAction = disposeAction;
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
this.disposeAction(disposing);
}
public static Disposer Register(ref IContainer container, Action<bool> disposeAction)
{
Disposer disposer = new Disposer(disposeAction);
if (container == null)
container = new System.ComponentModel.Container();
container.Add(disposer);
return disposer;
}
}
:
Disposer.Register(ref this.components, this.MyDisposeAction);
あなたのMainFormが配置されている場合は、すべてのサブフォームも意志次のクラスを使用して
処分する、例えば:
private void MyDisposeAction(bool disposing)
{
if (disposing)
{
foreach (var subForm in this.subForms)
{
subForm.Dispose(disposing);
}
}
}
コレクションにアクセスするためにそれを使用しています
異なるデータ。私はそれを開くたびに新しいインスタンスを作成したくありません。 –
しかし、なぜあなたはそれを処分することを心配していますか?ショーのダイアログ呼び出しの後に削除されないリソースは、どのリソースで使用していますか? – Spence
ShowDialogの後、フォームは自動的に処理されません。この方法で私はDialogResultにアクセスすることができます(これは自動的にそれを処理しない理由です)。ShowDialogを何度も何度も繰り返し使用しています。 メインフォームの廃棄時にサブフォームが廃棄されていることを確認したい。 –