繁体   English   中英

C#If在if循环中的for循环内循环

[英]C# If loop within a for loop within an if loop

如果可以,我想减少此代码:

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语句。

谢谢! :)

只需使用一个数组用于文本框,如下所示:

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);
    }
}

那么,你可以做到这一点:

if ((now < min || now > max) && now !=0)

这显着简化了您的陈述,因为now<minnow>max都做同样的事情。

对于33个文本框,您必须将它们放入数组并使用索引查找,编写一个名为getTextBoxFromIndex()的函数并执行一次巨型if块,或者查看是否可以执行类似mw["TxtBox"+i] (某些环境会支持它,其他环境不支持)。

例如,您可以通过每次使用“else if”而不是“if”来减少代码。

当你这样做

if(I==1)
{
}
if(I==2)
{
}

它将始终检查两个条件。

当你这样做

if(I==1)
{
}
else if(I==2)
{
}

仅当第一个语句为false时,才会检查第二个语句。 既然我们知道i = 1,我们知道我不能是2,所以我们不应该检查语句2。

另请阅读评论,因为它们提供了很好的信息。 您可以编写一个函数来检查i> 0和i <3并相应地将画笔设置为红色。 老实说,这个问题太宽泛了。 有很多方法可以减少代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM