我有按下表单对象上的命令按钮时运行的以下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语句有问题,或许我没有使用'或'运算符||
是否正确?任何帮助表示赞赏。
答案 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())||...)
{...