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