Проверка TextBox и ComboBox не работает должным образом - PullRequest
0 голосов
/ 10 июля 2019

Я хочу проверить несколько TextBoxes и Comboboxes с помощью MessageBox.Я сделал это, но проблема в том, что, как только я заполняю Jtextbox3 и ComboBox1, он игнорирует другие TextBoxes и ComboBoxes и переходит к следующей форме.

Вот мой код:

private void bunifuFlatButton1_Click(object sender, EventArgs e)      
{
    userform3 form3 = new userform3();
    var jtextboxes = new[] { jTextBox3, jTextBox4, jTextBox5, jTextBox6, jTextBox7, jTextBox8, jTextBox9, jTextBox10, jTextBox11, jTextBox12, jTextBox13, jTextBox14, jTextBox15, };
    var comboboxes = new[] { comboBox1, comboBox2, comboBox3, comboBox4, comboBox5, comboBox6 };
    foreach (var jbox in jtextboxes)
    {
        foreach (var combo in comboboxes)
        {
            if (string.IsNullOrEmpty(jbox.TextValue) || combo.SelectedItem == null)
            {
                MetroFramework.MetroMessageBox.Show(this, "", "Please Enter All the Fields as Required", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                form3.Show();
                this.Hide();
                form3.Hide();
                form3.ShowDialog();
                this.Show();
            }

            break;
        }

        break;
    }
}

Это является формой.Я отметил TextBox и ComboBox, с которыми у меня проблема.

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Вы проверяете только первое TextBox и первое ComboBox. У вас есть оператор break в конце обоих циклов foreach, поэтому каждый цикл будет выполняться только один раз ... другими словами, вы проверяете только первый элемент в jtextboxes и comboboxes.

Кроме того, внутренний цикл написан таким образом, что код, скрывающий / показывающий формы, будет выполнен, как только вы встретите TextBox со значением и ComboBox со значением. Другой способ написать это может быть:

private void bunifuFlatButton1_Click(object sender, EventArgs e)      
{
    userform3 form3 = new userform3();
    var jtextboxes = new[] { jTextBox3, jTextBox4, jTextBox5, jTextBox6, jTextBox7, jTextBox8, jTextBox9, jTextBox10, jTextBox11, jTextBox12, jTextBox13, jTextBox14, jTextBox15, };
    var comboboxes = new[] { comboBox1, comboBox2, comboBox3, comboBox4, comboBox5, comboBox6 };
    if (jtextboxes.Any(tb => string.IsNullOrEmpty(tb.TextValue)) || comboboxes.Any(cb => cb.SelectedItem == null))
    {
        MetroFramework.MetroMessageBox.Show(this, "", "Please Enter All the Fields as Required", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    }
    else
    {
        form3.Show();
        this.Hide();
        form3.Hide();
        form3.ShowDialog();
        this.Show();
    }
}

Это отобразит окно сообщения, если какие-либо из TextBox пусты, или если какое-либо из ComboBox не имеет выбранного значения.

0 голосов
/ 10 июля 2019

Похоже, у вас есть «разрыв» в неправильном месте для обоих циклов foreach. Разрыв означает, что он выйдет из цикла. Таким образом, в вашем коде вы выходите из внутреннего цикла foreach после Combobox1, а затем выходите из внешнего цикла foreach после первого текстового поля. Удалите их, и все должно работать нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...