2009-01-16 33 views
1

在Winform上實現IDisposable的最佳做法是什麼?IDisposable Winform

  • 我有延伸System.Windows.Forms.Form中
  • 生成designer.cs已經包含虛擬的Dispose(布爾)方法
  • 我的表格上字段手動其中加入的實現的對話實現IDisposable

理想情況下,我將能夠鉤到生成的代碼中的Dispos(布爾)重寫以處置手動添加的IDisposable對象。有關如何正確執行此操作的任何建議?

謝謝。

斯科特

回答

5

您可以將該Dispose實現移出.designer.cs和.cs文件。

+0

這麼簡單:)我沒想到設計師會處理這Dispose方法的任何事件。 – user38309 2009-01-16 16:52:42

2

但是,那麼你的字段需要一個組件(實現IComponent的接口或類似的東西)。 這不是有點矯枉過正嗎?

也許你可以附加一個事件處理程序的處置事件,並處置你的領域在該事件處理程序?

(或只是將它們添加到Dispose方法 - 我不認爲這將是一個問題,因爲據我所知,在Dispose方法的代碼沒有再生... 理想的情況下,Dispose方法的實現不應該已經在* .designer.cs類中...)。

1

我註銷形式的designer.cs發現

protected override void Dispose(bool disposing) 
    { 
     if (disposing && (components != null)) 
     { 
      components.Dispose(); 
     } 
     _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent; 
     base.Dispose(disposing); 
    }