微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 即使在返回true之后,在使用或运算符时调用所有3个函数

我在我的代码调用三个函数,我想验证我的一些字段.
当我尝试使用下面给出的代码时.它只检查第一个值,直到它得到错误的结果.

我想要一些类似的东西,如果fisrt函数返回true,那么它也应该调用next函数,依此类推.可以使用什么代替Or运算符来执行此操作.

if (IsFieldEmpty(ref txtFactoryName,true,"required") ||
        IsFieldEmpty(ref txtShortName,"required") ||
        IsFieldEmpty(ref cboGodown,"required"))
    { }

编辑

public bool IsFieldEmpty(ref TextBox txtControl,Boolean SetErrorProvider,string msgToShowOnError)
{
    ErrorProvider EP = new ErrorProvider();
    if (txtControl.Text == string.Empty)
    {
        EP.SetError(txtControl,msgToShowOnError);
        return true;
    }
    else
    {
        EP.Clear();
        return false;
    }
}

评论,这个方法是否可以使用ref变量作为参数之一.

我正在检查winform中的onSubmit事件验证.

解决方法

你可以使用单个|对于OR:

if (IsFieldEmpty(ref txtFactoryName,"required") |
    IsFieldEmpty(ref txtShortName,"required") |
    IsFieldEmpty(ref cboGodown,"required"))
{ }

双管||正在执行short-circuit evaluation,single version |做全面评估.
同样的&&和&amp ;.

MSDN reference.

对编辑的回应:

> txtControl前面不需要’ref’,删除它会对解决你的方法的批评有很大的帮助. IsFieldEmpty不对txtControl进行任何更改.您可以重命名为CheckFieldEmpty以进一步改进它.>在这方法中创建一个ErrorProvider实例很奇怪,这样做有用吗?表格上通常应该有一个(永久)实例.您可能希望此方法独立于Form,因此只需添加一个EP作为参数.它可以替换SetErrorProvider,可以检查EP参数是否为null. O,并替换EP.Clear();与Ep.SetErrortxtControl,“”);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐