0

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

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components)

该错误是一个 NullReferenceException,它是由 Me.components 是 Nothing 的事实引起的。谁能解释为什么表单的组件集合什么都不是?该表格似乎以其他方式工作正常!

4

4 回答 4

2

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

于 2009-02-05T17:08:33.137 回答
1

当您将组件添加到设计图面时,它会将其添加到 InitializeComponent 函数中

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

所以只需将其添加到您的自我中即可。

或者你的

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components)

在 InitializeComponent 之前被调用

于 2009-02-05T17:04:52.567 回答
0

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

它可以让一个人发疯......

于 2009-02-05T17:04:10.477 回答
0

解决了!

使用下面的代码来解决它!

Public Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

End Sub
于 2021-10-13T11:01:10.873 回答