質問

「エラープロバイダー」を通じて表示されている現在のエラーをすべて列挙することはできますか?コントロールにアクセスする必要はありませんか?

役に立ちましたか?

解決

すべてのエラーを表示するサマリーバリデーターがありますが、それはかなり見苦しく、ページに表示せずに使用できるかどうかはわかりません。技術的には、「正しい方法」で物事を行っている場合、すべてのエラー処理は中間段階で処理され、その方法で画面にバブリングされるため、コレクションまたは辞書のすべてのエラーに既にアクセスできます。

他のヒント

親のControlsコレクションを列挙し、それぞれに対してGetErrorを呼び出すことにより、ErrorProviderからすべてのエラーを取得できます。効率的ではありませんが、動作します。

foreach (Control ctrl in errProv.ContainerControl.Controls)
{
    Console.WriteLine(errProv.GetError(ctrl));
}

Googleなどでこれを見つけた.net WinFormsのユーザー向け...

WinFormsでは、少なくとも「エラープロバイダー」を通じて表示されている現在のエラーをすべて列挙します。すべてのコントロールにアクセスせずにクラスを作成することはできません。WinFormsにはサマリーバリデータさえありません。

ただし、エラーが下位層から発生している場合は、ポスターチャールズグラハムが指摘しているように、いずれにしてもエラーのコレクションにアクセスできるはずです。

WinFormsで、アプリケーションが十分に定義された「レイヤー」を持たないほど単純な場合次に、現在のすべてのエラーを記録して公開するクラスでErrorProviderをラップできます。または、アプリが本当にシンプルな場合は、エラーを記録/削除してErrorProviderを更新するヘルパーメソッドを作成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top