C# 如何验证Windows窗体
如何验证注册表?目前,我正在处理一个项目,它有许多文本框、几个单选按钮和复选框,我需要验证每个文本框,其中几个文本框是必需的,几个可以为空,但如果用户在这些空文本框中输入文本,则应验证这些输入。目前,我将正则表达式与嵌套的if-else语句一起使用,但这非常耗时,而且我对这么多if-else语句感到困惑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 (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您可以在故障条件中始终使用&&
,如果,则嵌套另一级别的,或者将复杂的内容分解为单独的函数。归根结底,什么是最可读的。