我在表单上有一个关闭按钮,我已将其设置为CausesValidation = false
。但是当我运行它并试图用ErrorProvider关闭它时,它不会让我关闭它。我甚至尝试添加到关闭例程errorProvider1.Clear()
或errorProvider1.Dispose() but
仍然没有运气关闭窗体,直到我处理错误。btnClose设置为CausesValidation = false但不起作用
我发现工作是关闭,如果我循环所有的控件,并设置CausesValidation=false
然后它按预期的方式通过关闭窗体,尽管出现任何错误。你能否提供见解?
private void btnAdd_Click(object sender, EventArgs e)
{
if (!this.ValidateChildren()) return;
DoAddCommand();
}
private void DoAddCommand()
{
//input
string input1 = textBox1.Text;
string input2 = textBox2.Text;
//process
this.ValidateChildren();
decimal sum = Class1.Add(input1, input2);
//output
lblSum.Text = sum.ToString();
}
private void textBoxNumberEntry_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
TextBox textBox = sender as TextBox;
decimal number1 = 0;
try
{
number1 = decimal.Parse(textBox.Text);
errorProvider1.Clear();
}
catch (FormatException)
{
errorProvider1.SetError(textBox, "Enter a valid number");
e.Cancel = true;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
foreach (Control item in this.Controls)
{
item.CausesValidation = false;
}
this.Close();
}
-1问题是关于Windows窗体,而不是ASP.NET。 – 2013-10-15 17:49:48
即使原来的问题是在Windows窗体方面,我发现这个解决方案对ASP.NET中的类似情况很有帮助。 – 2016-07-27 19:02:30