2009-02-05 116 views
0

我寫了一個自定義的ErrorProvider,它爲現有的ErrorProvider添加了一些功能(設置控制BackColor,ErrorCount等)。這是努力的過程,但現在由於某種原因,它的構造翻倒:爲什麼Me.components什麼都沒有?

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components) 

錯誤是由一個事實,即Me.components是沒有造成一個NullReferenceException。任何人都可以闡明爲什麼表單的組件集合是沒有用的?該表格似乎在其他任何方面都可以正常工作!

回答

1

當您添加到設計表面的分量它增加了這InitializeComponent函數

me.components = new System.ComponentModel.Container() 

所以只是在你自己添加此。

或您的

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components) 

正的InitializeComponent

之前調用
+0

我明白了,這是我失蹤的Me.components初始化! – Simon 2009-02-05 19:33:35

0

解決了這個問題,在窗體中添加另一個組件似乎解決了這個問題,但它有點混亂,但有效。我想最理想的解決方案是將我的ErrorProvider添加到me.components中,但爲了執行此操作,您需要初始化一個新的實例,因爲Me.components是Nothing,所以您不能這麼做!

它可以讓男人瘋狂.....

2

你也可以降低你ErrorLogErrorProvider類到你的表單設計界面/用戶控件和的InitializeComponent生成的代碼將正確初始化組件成員並將其傳遞給錯誤提供者的構造函數(VS對所有非可視化組件都這樣做)。只要確保ErrorLogErrorProvider類派生自任一組件或實現IComponent接口。

+0

好的提示,我不知道這一點。 – Simon 2009-02-05 19:34:19