エラープロバイダーでエラーを列挙する
-
03-07-2019 - |
質問
「エラープロバイダー」を通じて表示されている現在のエラーをすべて列挙することはできますか?コントロールにアクセスする必要はありませんか?
解決
すべてのエラーを表示するサマリーバリデーターがありますが、それはかなり見苦しく、ページに表示せずに使用できるかどうかはわかりません。技術的には、「正しい方法」で物事を行っている場合、すべてのエラー処理は中間段階で処理され、その方法で画面にバブリングされるため、コレクションまたは辞書のすべてのエラーに既にアクセスできます。
他のヒント
親のControlsコレクションを列挙し、それぞれに対してGetErrorを呼び出すことにより、ErrorProviderからすべてのエラーを取得できます。効率的ではありませんが、動作します。
foreach (Control ctrl in errProv.ContainerControl.Controls)
{
Console.WriteLine(errProv.GetError(ctrl));
}
Googleなどでこれを見つけた.net WinFormsのユーザー向け...
WinFormsでは、少なくとも「エラープロバイダー」を通じて表示されている現在のエラーをすべて列挙します。すべてのコントロールにアクセスせずにクラスを作成することはできません。WinFormsにはサマリーバリデータさえありません。
ただし、エラーが下位層から発生している場合は、ポスターチャールズグラハムが指摘しているように、いずれにしてもエラーのコレクションにアクセスできるはずです。
WinFormsで、アプリケーションが十分に定義された「レイヤー」を持たないほど単純な場合次に、現在のすべてのエラーを記録して公開するクラスでErrorProviderをラップできます。または、アプリが本当にシンプルな場合は、エラーを記録/削除してErrorProviderを更新するヘルパーメソッドを作成します。
所属していません StackOverflow