У меня есть серия текстовых полей в нескольких строках. Я хочу проверить, заполнены ли все текстовые поля или нет в строке, прежде чем переходить к следующей строке.окно с сообщением об ошибке появляется дважды за ту же ошибку
Я использую логику, когда фокус покидает последнее текстовое поле строки, проверьте, заполнены ли все текстовые поля или нет.
ROW 1 >> txtP1 , txtQ1, txtR1, txtA1
ROW 2 >> txtP2 , txtQ2, txtR2, txtA2 // here txtA1, txtA2 are for decimal inputs
private void txtA2_Leave(object sender, EventArgs e)
{
Decimal amt2;
if (!string.IsNullOrEmpty(txtA2.Text) || !string.IsNullOrWhiteSpace(txtA2.Text))
{
if (string.IsNullOrEmpty(txtP2.Text) || string.IsNullOrWhiteSpace(txtP2.Text)
|| string.IsNullOrEmpty(txtQ2.Text) || string.IsNullOrWhiteSpace(txtQ2.Text)
|| string.IsNullOrEmpty(txtR2.Text) || string.IsNullOrWhiteSpace(txtR2.Text))
{
MessageBox.Show("please complete the line 2", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtP2.Focus();
txtA2.Text = "";
}
if ((!string.IsNullOrEmpty(txtP2.Text) || !string.IsNullOrWhiteSpace(txtP2.Text)) && Decimal.TryParse(txtA2.Text, out amt2))
{
if (amt2 <= 0)
{
MessageBox.Show("Amount cannot be zero or negative", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtA2.Text = "";
}
totalAmt += amt2;
txtTotal.Text = totalAmt.ToString("#,###.00");
}
}
}
Когда txtP2, txtQ2, txtR2 пустые и txtA2 не пуст, и я стараюсь, чтобы перейти к следующей строке, появляется окно сообщения дважды. После появления окна сообщения потоки управления снова переходят к строке if (!string.IsNullOrEmpty(txtA2.Text) || !string.IsNullOrWhiteSpace(txtA2.Text))
, поэтому снова условие проверяется, и окно сообщения появляется снова.
Только после этого поток управления переходит ко второму, если условие if ((!string.IsNullOrEmpty(txtP2.Text) || !string.IsNullOrWhiteSpace(txtP2.Text)) && Decimal.TryParse(txtA2.Text, out amt2))
.
Пожалуйста, предложите, как я могу решить эту ошибку.
** правильно * * способ обработки [ввода пользователем в winforms] (https://msdn.microsoft.com/en-us/library/ms229603 (v = vs.110) .aspx) - обрабатывать 'Validating' и' Validated' Мероприятия. –