我有一个表格,其中有许多文本框,需要填写三个文本框才能提交表单。我不想为每个文本框使用每个If块。有没有办法为所有三个文本框使用单个if语句?我使用以下代码:
if (textBox1.Text != "" || textBox2.Text != "" || textBox4.Text != "")
{
// Code
}
else
{
MessageBox.Show("Fill required fields");
}
但是这个代码甚至可以填充单个文本狐狸,其余所需的文本框也是空的。
答案 0 :(得分:15)
if (textBox1.Text != "" && textBox2.Text != "" && textBox4.Text != "")
{
// Code
}
else
{
MessageBox.Show("Fill required fields");
}
您希望所有条件通过。这符合逻辑AND运算符&&
的语义。
如果您有大量的文本框,我倾向于将它们保存在列表中:
var boxes = new List<TextBox>{
textBox1,
textBox2,
textBox3,
//...
};
if (boxes.Any(tb => string.IsNullOrEmpty(tb.Text)))
{
MessageBox.Show("Fill required fields");
}
else
{
// Code
}
我也倾向于将异常保留在if
部分,返回或抛出错误并省略else
部分,因为这只是正常的代码流。这样可以使您期望的代码尽可能地向左运行。
答案 1 :(得分:5)
您应该将||
更改为&&
答案 2 :(得分:3)
您创建了一个or
语句的集合,因此只有一个语句需要为true才能继续。相反,你需要and
他们:
if (textBox1.Text != "" && textBox2.Text != "" && textBox4.Text != "")
答案 3 :(得分:3)
您可以定义一个测试空字符串的方法。
public class Test
{
public static bool IsEmpty(params string []args)
{
if (args.Length == 0) return true ;
return args.Any(p => string.IsNullOrEmpty(p));
}
}
测试字符串,
if(!Test.IsEmpty(TextBox1.Text,TextBox2.Text,TextBox3.Text))
{
//valid
}
答案 4 :(得分:2)
您使用OR(||)并应使用AND(&amp;&amp;)代替。您希望所有三个文本框都是非空字符串。请查看以下代码:
if (textBox1.Text != String.Empty && textBox2.Text != String.Empty && textBox4.Text != String.Empty)
{
// Code
}
else
{
MessageBox.Show("Fill required fields");
}
您还可以创建TextBoxes的集合并循环遍历它们以检查非空字符串。像这样:
List<TextBox> _lstTextBoxes = new List<TextBox>();
_lstTextBoxes.Add(textBox1);
_lstTextBoxes.Add(textBox2);
_lstTextBoxes.Add(textBox3);
Boolean checkFailed = false;
foreach(TextBox tb in _lstTextBoxes)
if(tb.Text == String.Empty)
checkFailed = true;
if(checkFailed)
MessageBox.Show("Fill required fields");
else
//code
通过这种方式,您可以使用更通用的方法轻松添加或删除某些文本框。
答案 5 :(得分:1)
而不是在您的情况下使用OR (||)
使用AND (&)
。
<强>建议强>
Trim
中的string
功能删除文本框中的任何空格(如果需要)textBox1.Text != ""
那样比较String.IsNullOrEmpty(textBox1.Text) == false
答案 6 :(得分:-1)
假设您总共有4个文本框,下面的代码将起作用
if ((textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "") || (textBox1.Text != "" && textBox2.Text != "" && textBox4.Text != "") ||
(textBox1.Text != "" && textBox3.Text != "" && textBox4.Text != "") || (textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "")
)
{
// Code
}
else
{
MessageBox.Show("Fill required fields");
}