4

这段代码很多if/else,我想知道它是否可以简化为几行。代码工作得很好,但我更喜欢更有效和更清洁的方式。

if (textBox_naam.Text.Length < 3)
{
   textBox_naam.BackColor = Color.FromArgb(205, 92, 92);
}
else
{
   textBox_naam.BackColor = Color.White;
}

if (textBox_email.Text.Length < 5)
{
   textBox_email.BackColor = Color.FromArgb(205, 92, 92);
}
else
{
   textBox_email.BackColor = Color.White;
}

if (textBox_body.Text.Length < 20)
{
   textBox_body.BackColor = Color.FromArgb(205, 92, 92);
}
else
{
   textBox_body.BackColor = Color.White;
}
4

4 回答 4

18

您最简单的赌注(不涉及任何技巧!)将是:

SetBackColor(textBox_naam, 3, GOOD_COLOR, BAD_COLOR);
SetBackColor(textBox_email, 5, GOOD_COLOR, BAD_COLOR);
SetBackColor(textBox_body, 20, GOOD_COLOR, BAD_COLOR);

使用如下定义的方法SetBackColor

public void SetBackColor(TextBox tb, int minLength, Color goodColor, Color badColor)
{
    tb.BackColor = tb.Text.Length < minLength ? badColor : goodColor;
}
于 2012-04-26T13:26:03.923 回答
2

您可以使用三元 if then else 运算符

textBox_naam.BackColor = textBox_naam.Text.Length < 3 ? Color.FromArgb(205, 92, 92) : Color.White;

这不会更有效,但会使用更少的代码行。

于 2012-04-26T13:25:45.450 回答
2

好吧,您可以使用速记 if 语句...

Color other=Color.FromArgb(205,92,92);
textBox_naam.BackColor=(textBox_naam.Text.Length<3?other:Color.White);
textBox_email.BackColor=(textBox_email.Text.Length<5?other:Color.White);
textBox_body.BackColor=(textBox_body.Text.Length<20?other:Color.White);
于 2012-04-26T13:28:31.423 回答
0

有没有安装Reshaper?我认为通过使用 JetBrain 的 VS 重塑器扩展,您会找到一个很好的(未来)帮助。依赖它,它是.NET 开发人员必备的绝佳工具。

于 2012-04-26T14:18:57.970 回答