我想用設計師的非UI組件至少有以下好處:
設計時支持
一個你在Windows窗體有最強大的東西是用設計師的能力設置組件。
即使Timer
不是UI組件,但您可以設置其屬性,如在設計的時間間隔。這適用於許多其他組件,如BindingSource
,ErrorProvider
,...您可以使用非常友好的屬性網格和類型編輯器以及類型轉換器在設計時配置屬性。
- 當您想爲其他控件配置依賴屬性時;例如通過將
BindingSource
添加到設計器,它使數據綁定變得非常簡單。
- 當您需要使用擴展器供應商,如
HelpProvider
和Tooltip
,因爲它們與其他控件,這是很容易在設計模式對其進行配置。
- 當你需要配置像
DataSource
和DataMember
特性,它是非常友好的使用設計器和使用大屬性網格功能。
- 組件將添加爲類級別字段,您可以使用deigner將它們公開。
- 當你需要使用的
Form
Localizable
功能爲您的組件,它用設計師的完全可用。
- 當您需要簡單地添加或刪除事件處理程序時,您可以使用屬性網格執行此操作。
標準代碼
如果你看看設計器生成的代碼,你會看到:
的組件,支持
ISupportInitialize
- 生成的代碼使用它們
BeginInit
和EndInit
- 生成的代碼對於組件,將
this.components
傳遞給構造函數,然後在使用它時使用它Dispose
如果您不需要設計時支持,並且爲組件編寫標準代碼,那麼在代碼中使用主題完全可以。
如果我正確理解你的話,InitializeComponent()包含剛刪除的東西的代碼 – brykneval
@brykneval我知道設計者聲明和初始化組件的位置,但我不明白使用設計器的好處非UI組件。 – Wizard79
您可以檢查實現'IDisposable'的對象,設計師是否在'Disposing(bool disposing)'中添加了Dispose()'調用。或者找一個關於變量名的所有引用,看看是否添加了任何代碼(除了明顯的)。 – Loathing