C#注册必填字段,如果出现问题,应该变为红色

时间:2018-04-20 06:07:08

标签: c#

我试图为我的注册表单创建一个支票。如果必须填写的必填字段未正确填写或根本不填写,则文本字段应显示为红色。目前我只是设法将所有字段变为红色,当一个必填字段错误时,但我怎么知道只有错误的文本字段变成红色?我知道我的例子是错的,我已经尝试过了,但是这也没有用。

if (String.IsNullOrEmpty(txtBenutzerName.Text) || (String.IsNullOrEmpty(txtPasswort.Text) || (String.IsNullOrEmpty(txtVorname.Text) || (String.IsNullOrEmpty(txtNachname.Text)) || (String.IsNullOrEmpty(txtEmail.Text)))))
        {
            txtBenutzerName.BackColor = Color.Red;
            txtPasswort.BackColor = Color.Red;
            txtVorname.BackColor = Color.Red;
            txtNachname.BackColor = Color.Red;
            txtEmail.BackColor = Color.Red;
        }

2 个答案:

答案 0 :(得分:2)

您可以为每个语句单独执行if语句:

if (String.IsNullOrEmpty(txtBenutzerName.Text))
{
    txtBenutzerName.BackColor = Color.Red;
}
else
{
    txtBenutzerName.BackColor = SystemColors.Window;
}

if (String.IsNullOrEmpty(txtPasswort.Text))
{
    txtPasswort.BackColor = Color.Red;
}
else
{
    txtPasswort.BackColor = SystemColors.Window;
}

或者您可以使用三元运算符在一行中完成此操作(我将其拆分为两个以方便阅读):

txtBenutzerName.BackColor = String.IsNullOrEmpty(txtBenutzerName.Text) 
                             ? Color.Red : SystemColors.Window;

或者,如果您的验证只是检查它们是否为空,您可以制作如下方法:

public bool ValidateField(TextBox textBox)
{
    if (string.IsNullOrEmpty(textBox.Text))
    {
        textBox.BackColor = Color.Red;
        return false;
    }
    else
    {
        textBox.BackColor = SystemColors.Window;
        return true;
    }
}

然后这样称呼它:

ValidateField(txtBenutzerName);
ValidateField(txtPasswort);

如果一切都有效,你可以做点什么:

if(ValidateField(txtBenutzerName) & ValidateField(txtPasswort))
{
    MessageBox.Show("yay");
}

答案 1 :(得分:0)

或类似的东西

List<TextBox> textBoxesToValidate = new List<TextBox> { txtBenutzerName, txtPasswort, ... };

textboxesToValidate.ForEach( x=> {x.BackColor = String.IsNullOrEmpty(x.Text) 
                         ? Color.Red : SystemColors.Window;});