在C#中正确使用逻辑运算符

时间:2015-05-12 12:09:20

标签: c# winforms

我有按下表单对象上的命令按钮时运行的以下If块。这应该只是检查四个提到的文本框中是否有空是如此,如果是,则显示一个消息框然后退出该过程,以便用户可以更正字段并继续。

以下是相关代码:

 if (string.IsNullOrWhiteSpace(txtName.ToString()) || 
     string.IsNullOrWhiteSpace(txtID.ToString()) ||
     string.IsNullOrWhiteSpace(txtSalary.ToString()) ||
     string.IsNullOrWhiteSpace(txtERR.ToString()))
 {
  MessageBox.Show("One or more text fields are empty or hold invalid data, please correct this to continue","Data Error",MessageBoxButtons.OK);
  return;
 }

我已将所有文本字段留空,甚至尝试将空白字符放入,但条件代码未被执行。由于代码没有执行,我假设我的if语句有问题,或许我没有使用'或'运算符||是否正确?任何帮助表示赞赏。

5 个答案:

答案 0 :(得分:10)

如果要检查文本框,则需要从文本框中获取文本。

 if (string.IsNullOrWhiteSpace(txtName.Text) || ... 


作为一点奖励你也可以这样写:

if(new [] {txtName, txtID, txtSalary, txtERR}
  .Any(tb => string.IsNullOrWhiteSpace(tb.Text)))
{
   MessageBox.Show("One or more text fields are empty or hold invalid data, please correct this to continue","Data Error",MessageBoxButtons.OK);
   return;
}

答案 1 :(得分:3)

您应该使用Text的{​​{1}}属性。 TextBox方法返回字符串“System.Windows.Forms.TextBoxBase”。这个字符串显然从不为空或为空。

ToString

答案 2 :(得分:2)

如果txtName,txtID等控件名称,则需要引用.Text属性。尝试下面的代码片段:

if (string.IsNullOrWhiteSpace(txtName.Text) || 
 string.IsNullOrWhiteSpace(txtID.Text) ||
 string.IsNullOrWhiteSpace(txtSalary.Text) ||
 string.IsNullOrWhiteSpace(txtERR.Text)) 
 {
  MessageBox.Show("One or more text fields are empty or hold invalid data, please correct this to continue","Data Error",MessageBoxButtons.OK);
  return;
 }

答案 3 :(得分:1)

TextBox.ToString()将返回TextBox的类型 - 因此永远不会是NullOrWhiteSpace。你想要的是检查Text属性的内容,如下所示:

if (string.IsNullOrWhiteSpace(txtName.Text || 
 string.IsNullOrWhiteSpace(txtID.Text) ||
 string.IsNullOrWhiteSpace(txtSalary.Text) ||
 string.IsNullOrWhiteSpace(txtERR.Text))
 {
      MessageBox.Show("One or more text fields are empty or hold invalid data, please correct this to continue","Data Error",MessageBoxButtons.OK);
      return;
 }

答案 4 :(得分:-1)

我没有使用 IsNullOrWhiteSpace 进行此类测试,而是更喜欢使用 IsNullOrEmpty

试试这个:

if (string.IsNullOrEmpty(txtName.Text)||...)
{...

或者txtName可能正在返回TEXT对象...试试这个

if (string.IsNullOrEmpty(txtName.Text.toString())||...)
{...