我有一个这样的函数,用于检查字段是否为空或者是否为空,然后在文本框旁边显示setError图标。
private bool ValidateHost()
{
ErrorProvider errorProvider = new ErrorProvider();
bool isValid = true;
//If the txtHost is empty, show a message to user
if(txtHost.Text == string.Empty)
{
errorProvider.SetError(txtHost, "Please enter the host address");
isValid = false;
}
else
errorProvider.SetError(txtHost, string.Empty);
return isValid;
}
但是当我尝试使用字符串时,isnullorempty然后我没有得到seterror图标.. 你们能告诉我在这种情况下使用string.isnullorempty的正确方法是什么..
答案 0 :(得分:7)
我的猜测是你尝试使用它,好像它是一个实例方法,如下所示:
if (txtHost.Text.IsNullOrEmpty())
这不是一个实例方法 - 它是一个静态方法,因此您可以像这样使用它:
if (string.IsNullOrEmpty(txtHost.Text))
这不是一个实例方法,否则如果txtHost.Text
为null,方法调用将抛出NullReferenceException
,这正是我们试图避免的。
你可以编写一个可以处理null的扩展方法,但据我所知,框架中没有一个。
答案 1 :(得分:5)
string.IsNullorEmpty()
是一个静态方法,调用如下:
if (string.IsNullOrEmpty(txtHost.Text))
{
errorProvider.SetError(txtHost, "Please enter the host address");
isValid = false;
}
如果空格,制表符等也无效,您也可以考虑类似的string.IsNullOrWhitespace
。
答案 2 :(得分:0)
将您的IF条件更改为 -
if( string.IsNullOrEmpty(txtHost.Text) )
{
...
}
答案 3 :(得分:0)
这可不是他的字符串测试吗?
ErrorProvider errorProvider = new ErrorProvider控件();
哼。认真。 ErrorProvider应该存在于表单上。你只是在飞行中创建一个(在方法结束时变为无效),甚至没有在表单中正确地挂起它们。
应将ErrorProvider放在表单上。