ここで明らかな何かを見落としている場合はお詫び申し上げます。
問題のコンテキスト
ユーザーがフォームに入力できるアプリケーションがあり、その内容はデータベースにアップロードされます。「アップロード」ボタンを押すと、フォームを検証する必要があります。無効なフィールドがある場合、ユーザーに警告が表示されます。
現在のソリューション
ユーザーがボタンを押してトランザクションをアップロードすると、validFormSelections()
が呼び出されます。
if (!this.validateChildren())
{
// Display an error
return false;
}
else
{
return true;
}
コンボボックスごとに、検証メソッドが呼び出されます。
cmbName_Validating(object sender, CancelEventArgs e)
{
if (/* not valid for whatever reason */)
{
errorProvider.Clear();
e.Cancel = true;
errorProvider.setError((Control)sender, /* suitable error message */)
}
else
{
errorProvider.SetError((Control)sender, "");
}
}
問題
私がやりたいのは、無効なすべてのerrorProvider
フィールドの次を表示することですが、現時点では、個々の検証方法では、(私の理解が正しければ)最初の無効なフィールドが表示されると、他のフィールドの検証を続行しません見つかった。e.Cancel = true;
すべての無効なフィールドの隣に呼び出しthis.validateChildren()
て表示できるようにするにはどうすればよいですか?errorProvider
これまでの解決策の研究の試み
私が理解している限り、残りの検証を「遮断」するため、
CancelEventArgs
'プロパティを true に設定する必要があります。Cancel
そのため、後でこのプロパティを設定しないようにする方法を見つけるか、これを回避する方法を見つけることをお勧めします。しかし、私はそれを行う方法がわかりません。私の最初の考えの 1 つは、各検証イベント ハンドラーから を返すことができれば、これをかなり簡単に解決できるということでした
boolean
(しかし、私はそれができないと思っていましたが、それができないことを学びました)。イベント ハンドラーで値を返す代わりに、変更可能な値 (たとえば、CancelEventArgs
それ自体など) を渡すことが考えられます。これはおそらく適切な解決策のように思えますが、どうすれば自分でこれを行うことができるかわかりません...