ac# winforms アプリケーションで errorprovider を使用しています。ここで、「二重」の検証が必要です。直接テキストフィールドに一度、ユーザーは自分がいくつかのエラーを犯したことを確認し、ボタン自体に一度。そのため、まだエラーがある場合、「保存」ボタンはグレー表示または「無効」のままになります。
ユーザーがエラーを起こしているときにユーザーをブロックしたくないので、イベント「離れる」またはフォーカスを失ったときにいつでも変更できるようにしたいからです。そうしないと、エラーを変更するまで別のフィールドに移動できないことに気付いたからです。
したがって、コードは次のとおりです。
private void txtFirstname_Leave(object sender, EventArgs e)
{
if (!InputChecks.IsFilledIn(txtFirstname.Text))
{
errorProvider1.SetError(txtFirstname, "Firstname needs to be filled in!");
isValidated = false;
}
else
{
errorProvider1.SetError(txtFirstname, "");
isValidated = true;
}
}
ここまでは順調ですね。エラー プロバイダーは正しく機能し、ユーザーはいつでも編集できます。
public void setSaveButton()
{
if (isValidated == true)
{
btnSave.Enabled = true;
}
else
{
btnSave.Enabled = false;
}
}
bool isValidated;
private void btnSave_Click(object sender, EventArgs e)
{
if (isValidated == true)
{
employeePresenter.addEmployee(txtFirstname.Text, txtLastname.Text, txtUsername.Text, txtPassword.Text);
}
}
これはまだ私の頭の中で大丈夫でした。しかし、ユーザーがいつでも問題を変更できるようにしているため、これは機能しません。メソッド「setSaveButton()」を「isvalidated」の下に配置しようとしましたが、これも機能しません。フォーカスが失われたため。
誰でもこれについてより良いアイデアを持っていますか? 私はグーグルで探していましたが、見つかったのはエラープロバイダーによる単一の検証、またはイベントの検証だけでした。しかし、これらのイベントでは、ユーザーがいつでもエラーを編集できるわけではありません。それらを 1 つの特定のテキスト フィールドにブロックします。