У меня есть кнопка закрытия на моей форме, которую я установил на 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 Forms, а не в ASP.NET. –
Хотя исходный вопрос был в терминах Windows Forms, я нашел это решение полезным для подобных ситуаций в ASP.NET. –