如果可以,我想减少此代码:
class Alarm
{
internal static void isGreaterThanOrBelowValue(int min, int max, int now, int i)
{
MainWindow mw = new MainWindow();
if (now < min && now !=0)
{
if(i == 1)
{
mw.TxtBox1.Foreground = new SolidColorBrush(Colors.Red);
}
if (i == 2)
{
mw.TxtBox2.Foreground = new SolidColorBrush(Colors.Red);
}
if (i == 3)
{
mw.TxtBox3.Foreground = new SolidColorBrush(Colors.Red);
}
}
if (now > max && now !=0)
{
if(i == 1)
{
mw.TxtBox1.Foreground = new SolidColorBrush(Colors.Red);
}
if (i == 2)
{
mw.TxtBox2.Foreground = new SolidColorBrush(Colors.Red);
}
if (i == 3)
{
mw.TxtBox3.Foreground = new SolidColorBrush(Colors.Red);
}
}
}
我想做以下事情:
我可以在1到33之间。
我可以获取文本框名称(TxtBox1)等。
我想减少if语句,所以每个较大的if语句都没有32个if语句。
谢谢! :)
答案 0 :(得分:3)
只需使用数组作为文本框,如下所示:
internal static void isGreaterThanOrBelowValue(int min, int max, int now, int i)
{
MainWindow mw = new MainWindow();
TextBox[] tbList = new TextBox[] { mw.TxtBox1, mw.TxtBox2, mw.TxtBox3 };
if (now !=0 && (now < min || now > max))
{
tbList[i-1].Foreground = new SolidColorBrush(Colors.Red);
}
}
如果文本框没有改变,你也可以在函数外部构建数组作为类成员,这样你就不会在每次调用函数时重建它:
static MainWindow mw = new MainWindow();
static TextBox[] tbList = new TextBox[] { mw.TxtBox1, mw.TxtBox2, mw.TxtBox3 };
internal static void isGreaterThanOrBelowValue(int min, int max, int now, int i)
{
if (now !=0 && (now < min || now > max))
{
tbList[i-1].Foreground = new SolidColorBrush(Colors.Red);
}
}
答案 1 :(得分:0)
嗯,你可以做到这一点:
if ((now < min || now > max) && now !=0)
这会极大地简化您的陈述,因为now<min
和now>max
都会做同样的事情。
对于33个文本框,您必须将它们放入数组并使用索引查找,编写一个名为getTextBoxFromIndex()
的函数并执行一次巨型if块,或者查看是否可以做mw["TxtBox"+i]
之类的事情(某些环境会支持它,其他环境则不支持)。
答案 2 :(得分:0)
对于其中一个,您可以通过每次使用“else if”而不是“if”来减少代码。
当你这样做时
if(I==1)
{
}
else if(I==2)
{
}
它将始终检查这两个条件。
当你这样做时
$("button#up").click(function(){
$("select").moveSelectedUp();
});
$("button#down").click(function(){
$("select").moveSelectedDown();
});
如果第一个语句为false,则仅检查第二个语句。既然我们知道i = 1,我们知道我不能是2,所以我们不应该检查语句2.
同时阅读评论,因为它们提供了很好的信息。您可以编写一个函数来检查i> 0和i&lt; 3并相应地将画笔设置为红色。老实说,这个问题太宽泛了。有很多方法可以减少代码。