多个文本框验证

时间:2014-06-14 16:49:13

标签: c# validation if-statement textbox

我是初学者,正在学习c#。如果我有2个文本框,我可以在1 if语句中验证2个文本框吗?

例如:

{
    string emptytextbox
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.text == "")
    {
        //if textbox2 is empty, then messagebox will show
        emptytextbox = textBox2.text;
        mbox(emptytextbox + " must be filled");

        //messagebox will show "textBox2 must be filled"
        //but if textbox1&2 has ben filled, but textbox3 empty,then messagebox will show "textbox3 must be filled"
    }
}

我可以这样做吗?

3 个答案:

答案 0 :(得分:1)

一个条件返回一个布尔值,没有办法知道一个是空文本框。当您编写或表达式时,如果任何组件评估为true,则条件评估为true。在这种情况下,当你进入条件时,事实是至少有一个条件是真的(条件我的意思是textBox1.Text == "")。

在这种情况下,执行验证的最佳方法必须是这样的:

void VerificationFunction()
    {
        CheckTextBox(textbox1);
        CheckTextBox(textbox2);
        CheckTextBox(textbox3);
    }

void CheckTextBox(TextBox tb)
    {
        if (string.IsNullOrEmpty(tb.Text))
        {
            MessageBox.Show(tb.Name + "must be filled");
        }
    }

答案 1 :(得分:0)

  

我可以在1“if”语句中验证2个文本框吗?

NO。因为您必须检查每个textBox并通知用户有关特定textBox的内容。

对于所有三个文本框,您可以执行以下操作:

if (textBox1.Text == "")       
     MessageBox.Show("textBox1 must be filled");
if (textBox2.Text == "")       
     MessageBox.Show("textBox2 must be filled");
if (textBox3.Text == "")       
     MessageBox.Show("textBox3 must be filled");

优良作法是为此目的设置一种方法。


这是可用于检查表单上的每个TextBox的方法。如果有任何空的TextBox,它将向用户显示textbox must be filled的消息。好的做法是通知用户一次。

private void ValidateTextBoxes()
    {
        foreach (Control c in this.Controls)
        {
            if (c is TextBox)
            {
                if (string.IsNullOrEmpty(c.Text))
                {
                    MessageBox.Show(c.Name + " must be filled");
                    break;
                }

            }
        }
    }

答案 2 :(得分:0)

最好的方法是单独进行

if (String.IsNullOrEmpty(textBox1.Text))
{
     textBox1.BorderBrush = System.Windows.Media.Brushes.Red;
}
if (String.IsNullOrEmpty(textBox2.Text))
{
     textBox2.BorderBrush = System.Windows.Media.Brushes.Red;
}

enter image description here