0

既存の ErrorProvider にいくつかの機能を追加するカスタム ErrorProvider を作成しました (コントロール BackColor、ErrorCount などを設定します)。これは find で機能していましたが、何らかの理由でコンストラクターに落ちます:

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components)

このエラーは、Me.components が Nothing であるために発生する NullReferenceException です。フォームのコンポーネント コレクションが 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 に答える