Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证Windows窗体_C#_.net - Fatal编程技术网

C# 如何验证Windows窗体

C# 如何验证Windows窗体,c#,.net,C#,.net,如何验证注册表?目前,我正在处理一个项目,它有许多文本框、几个单选按钮和复选框,我需要验证每个文本框,其中几个文本框是必需的,几个可以为空,但如果用户在这些空文本框中输入文本,则应验证这些输入。目前,我将正则表达式与嵌套的if-else语句一起使用,但这非常耗时,而且我对这么多if-else语句感到困惑 if (textBox1.Text != string.Empty) { Regex emp1=new Regex("^[a-z-A-Z]+$"); if(emp1.IsMatc

如何验证注册表?目前,我正在处理一个项目,它有许多文本框、几个单选按钮和复选框,我需要验证每个文本框,其中几个文本框是必需的,几个可以为空,但如果用户在这些空文本框中输入文本,则应验证这些输入。目前,我将正则表达式与嵌套的if-else语句一起使用,但这非常耗时,而且我对这么多if-else语句感到困惑

if (textBox1.Text != string.Empty) {
    Regex emp1=new Regex("^[a-z-A-Z]+$");
    if(emp1.IsMatch(textBox1.Text)) {
        if (textBox2.Text != string.Empty) {
            Regex emp2 = new Regex("^[0-9]+$");
            if(emp2.IsMatch(textBox2.Text)) {
                int a = int.Parse(textBox2.Text);
            else {
                MessageBox.Show("characters not allowed");
                textBox2.Focus();
            }
        } else {
            MessageBox.Show("pls enter age");
        }                       
    } else {
        MessageBox.Show("no. are not allowed ");
    }
} else {
    MessageBox.Show("pls enter name");
    textBox1.Focus();
}

您可以在每次检查后使用return

if (string.IsNullOrEmpty(textBox1.Text))
{
    MessageBox.Show("pls enter name");
    textBox1.Focus();
    return;
}

Regex emp1=new Regex("^[a-z-A-Z]+$");
if (!emp1.IsMatch(textBox1.Text))
{
    MessageBox.Show("no. are not allowed ");
    return;
}
等等


如果您不喜欢将收益分摊到代码中,您可以使用
else If
。对于此类检查,我个人倾向于在消息之后立即使用返回。

您可以使用
这样的语句执行此操作:

string message = null;
TextBox focusMe = null;

if (failure1)
{
    message = "message1";
}
else if (failure2)
{
    message = "message2";
}
else if (failure3)
{
    message = "message3";
}

if (!string.IsNullOrEmpty(message))
{
    MessageBox.Show(message);

    if (focusMe != null) focusMe.Focus();
}

我喜欢单一的
返回
,所以这是我喜欢的风格。此外,您还可以通过将
else if
替换为
if
,并将错误添加到列表中,轻松修改此代码以检查多个错误条件。

丑陋的代码示例请使用
中的格式,以便
没有人想滚动查看此messYo dawg,我听说您喜欢
if
语句…
,我将正则表达式与嵌套的if-else语句一起使用,但这非常耗时,而且我对这么多if-else语句感到困惑。
-是的,我们都来嘲笑他嵌套的if语句是多么不可读。我认为他已经发现了这个问题,显然需要帮助以正确的方式完成。你听说过
return false
?这个问题似乎离题了,因为代码正在工作,但要求代码复查。这样的问题应该在问。请不要鼓励一个方法有多个退出点。它使上述方法更难调试/维护。这取决于检查失败后想要执行多少特定操作。在这种情况下,if-else方法的问题可能是您不能始终在一个表达式中执行所有验证步骤,以便在if语句中使用。在这个案例中,他已经证明他必须先构造一个正则表达式。它可以重写为表达式,但这并不总是可能的。@CraigW。不,如果所有的退出点都在方法(通常是验证)本身的顶部,那么没有什么错。保持代码可读性和易于维护。+1用于避免返回分散在代码中。取决于是否始终可以将失败条件编写为一个表达式。您不希望在前面计算n个故障变量。@BlueM您可以在故障条件中始终使用
&&
,如果
,则嵌套另一级别的
,或者将复杂的内容分解为单独的函数。归根结底,什么是最可读的。