3

コントロールにアクセスせずに、「エラー プロバイダー」を介して現在表示されているすべてのエラーを列挙することは可能ですか?

4

4 に答える 4

4

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

foreach (Control ctrl in errProv.ContainerControl.Controls)
{
    Console.WriteLine(errProv.GetError(ctrl));
}
于 2010-02-19T15:07:50.840 に答える
2

グーグルなどでこれを見つけた.net WinFormsの人々のために...

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

ただし、エラーが下位層から発生している場合は、ポスターの Charles Graham が指摘しているように、どこかでそれらのコレクションにアクセスできる必要があります。

于 2008-10-28T18:03:34.897 に答える
2

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

于 2009-10-02T18:55:07.053 に答える
1

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

于 2008-10-01T06:35:44.933 に答える