为什么Me.components什么都没有?

时间:2009-02-05 16:53:09

标签: vb.net winforms custom-controls

我编写了一个自定义ErrorProvider,它为现有的ErrorProvider添加了一些功能(设置控件BackColor,ErrorCount等)。这很有效,但现在由于某种原因,它会落在构造函数上:

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components)

错误是NullReferenceException,它是由Me.components为Nothing引起的。任何人都可以解释为什么表单的组件集合将是什么?表格似乎在其他方面都很好用!

3 个答案:

答案 0 :(得分:2)

您还可以将ErrorLogErrorProvider类放到Form / UserControl的设计图面上,为InitializeComponent生成的代码将正确初始化组件成员并将其传递给错误提供程序的构造函数(VS为所有非可视化执行此操作组件)。只需确保您的ErrorLogErrorProvider类派生自Component或实现IComponent接口。

答案 1 :(得分:1)

将一个组件添加到设计图面时,它会在InitializeComponent函数中添加它

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

所以只需将它添加到自己身上。

或你的

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components)
在InitializeComponent

之前调用

答案 2 :(得分:0)

解决了它,在表单中添加另一个组件似乎可以解决这个问题,它有点像cludge但是有效。我想理想的解决方案是将我的ErrorProvider添加到me.components但是为了做到这一点,你需要初始化一个你不能的新实例,因为Me.components是Nothing !!

这可能会让一个男人疯狂......