如何在错误提供程序组件上安装枪口
本文关键字:组件 安装 程序 错误 | 更新日期: 2023-09-27 18:30:52
我正在尝试使用ErrorProvider组件。
我在表单上有一个关闭按钮,当然它在表单的 NE 角也有"X"关闭的东西。
但是,一旦"引发"错误,单击"关闭"按钮或"关闭"框(或任何称为doohicky的东西)都是无响应/无功能的。
我必须执行哪些操作才能允许用户在表单上有错误时将其关闭?
更新:
这是我现在在"关闭"按钮的 OnClick() 处理程序中尝试的代码 - 它仍然拒绝关闭:
private void buttonCancel_Click(object sender, EventArgs e) {
formValidation.SetError(this, String.Empty);
Close();
}
再次更新:只是为了做鬼脸,我尝试在"关闭"按钮上将"DialogResult"属性从"已取消"更改为"无",但这没有帮助(没想到它会 - 抓住稻草)
也没有将按钮的"原因验证"属性从 True 更改为 False...
再次更新:
以下是可能适合也可能不适合发布的所有相关信息:
. . .
const int MINIMUM_PASSWORD_LENGTH = 5;
private string originalPassword {
get { return textCurrentPassword.Text; }
}
private string newCandidatePassword1 {
get { return textNewPassword.Text; }
}
private string newCandidatePassword2 {
get { return textNewPasswordRepeated.Text; }
}
public ChangePassword() {
InitializeComponent();
}
private void textCurrentPassword_Validating(object sender, CancelEventArgs e) {
string error = null;
if (originalPassword.Equals(String.Empty)) {
error = currentPasswordInvalid;
e.Cancel = true;
//textCurrentPassword.Focus(); probably unnecessary because of .SetError() below
};
// TODO: Replace 1==2 with call that compares password with the current user's confirmed password
if (1 == 2) {
error = currentPasswordDoesNotMatchCurrentUser;
e.Cancel = true;
}
formValidation.SetError((Control)sender, error);
if (null != error) {
;
}
}
private void textNewPassword_Validating(object sender, CancelEventArgs e) {
string error = null;
if (newCandidatePassword1.Length < 5) {
error = newPasswordInvalid;
e.Cancel = true;
}
formValidation.SetError((Control)sender, error);
if (null != error) {
;
}
}
private void textNewPasswordRepeated_Validating(object sender, CancelEventArgs e) {
string error = null;
// Long enough?
if (newCandidatePassword2.Length < MINIMUM_PASSWORD_LENGTH) {
error = newPasswordInvalid;
e.Cancel = true;
}
// New passwords match?
if (!newCandidatePassword2.Equals(newCandidatePassword1)) {
error = newPasswordsDoNotMatch;
e.Cancel = true;
}
// They match, but all three match (undesirable)
if (!originalPassword.Equals(newCandidatePassword1)) {
error = newPasswordSameAsOld;
e.Cancel = true;
}
// Unique across the user base?
// TODO: Replace 1==2 with call that verifies this password is unique
if (1 == 2) {
error = newPasswordNotUnique;
e.Cancel = true;
}
formValidation.SetError((Control)sender, error);
if (null != error) {
;
}
}
private void buttonCancel_Click(object sender, EventArgs e) {
foreach (Control ctrl in this.Controls) {
formValidation.SetError(ctrl, string.Empty);
}
Close();
}
您可以尝试清除关闭按钮处理程序中的 SetError:
private void buttonCancel_Click(object sender, EventArgs e)
{
foreach (Control ctrl in this.Controls)
{
formValidation.SetError(ctrl, string.Empty);
}
Close();
}
还要仔细检查您的按钮取消是否确实连接到此处理程序。放置一个断点,并确保至少进入此函数。