Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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#动态If分段_C#_Wpf_Visual Studio - Fatal编程技术网

C#动态If分段

C#动态If分段,c#,wpf,visual-studio,C#,Wpf,Visual Studio,在C中构建WPF应用程序# 我有5个复选框,当选择一个或多个复选框时,我希望it语句的参数动态更改。 例如,我将周一、周二、周三、周四和周五作为复选框。 如果用户选择Mon、Wed和Fri,那么我希望If语句的参数改变以反映这一点。 我不想做很多不同的if语句。 这是我写的一个示例,但是if语句显然是错误的 string passArg = ""; if(check_mon.IsChecked == true) { passArg = "

在C中构建WPF应用程序# 我有5个复选框,当选择一个或多个复选框时,我希望it语句的参数动态更改。 例如,我将周一、周二、周三、周四和周五作为复选框。 如果用户选择Mon、Wed和Fri,那么我希望If语句的参数改变以反映这一点。 我不想做很多不同的if语句。 这是我写的一个示例,但是if语句显然是错误的

string passArg = "";

        if(check_mon.IsChecked == true)
        {
            passArg = "passArg == \"Mon\"";
        }

        if(passArg)
        {
            MessageBox.Show("RAN");
        }

抱歉,如果这是一个愚蠢的问题

没有您想要的那么简单。您可以动态地生成代码,但在这种情况下,这是多余的。您所需要的只是:

bool isChecked = false;

if(check_mon.IsChecked && passArg == "Mon")
{
    isChecked = true;
}
...

if(isChecked)
{
    MessageBox.Show("RAN");
}
我不想做很多不同的if语句


您可以将复选框放入循环中,设置
标记
或其他一些属性,并将其与
pasArg
进行比较,但我倾向于使用最简单的解决方案,首先有效,然后专注于使其更好。您可能会发现,当7
if
语句可以正常工作时,您会花更多的时间尝试想出一个聪明的解决方案(以后可能无法理解)。您可以动态地生成代码,但在这种情况下,这是多余的。您所需要的只是:

bool isChecked = false;

if(check_mon.IsChecked && passArg == "Mon")
{
    isChecked = true;
}
...

if(isChecked)
{
    MessageBox.Show("RAN");
}
我不想做很多不同的if语句


您可以将复选框放入循环中,设置
标记
或其他一些属性,并将其与
pasArg
进行比较,但我倾向于使用最简单的解决方案,首先有效,然后专注于使其更好。当7
if
语句可以正常工作时,您可能会发现您花费了更多的时间试图想出一个聪明的解决方案(以后可能无法理解)。您可以在列表中检查值:

List<string> checked = new List<string>()

if (check_mon.IsChecked)
{
   checked.Add("Mon");
}

if (checked.Contains(passArg))
{
   MessageBox.Show("RAN");
}
List checked=新列表()
如果(检查是否已检查)
{
选中。添加(“周一”);
}
如果(选中。包含(passArg))
{
MessageBox.Show(“RAN”);
}

您可以检查列表中的值:

List<string> checked = new List<string>()

if (check_mon.IsChecked)
{
   checked.Add("Mon");
}

if (checked.Contains(passArg))
{
   MessageBox.Show("RAN");
}
List checked=新列表()
如果(检查是否已检查)
{
选中。添加(“周一”);
}
如果(选中。包含(passArg))
{
MessageBox.Show(“RAN”);
}

当复选框被选中时,您可以触发事件。
未选中时,您可以使用此方法设置或取消设置您的内容。
例如,在xaml表单中:

<CheckBox Checked="Checked" Unchecked="UnChecked"/>

当复选框被选中时,您可以触发一个事件,并且在这个方法中您可以设置或取消设置您的内容。
例如,在xaml表单中:

<CheckBox Checked="Checked" Unchecked="UnChecked"/>

是否需要switch语句?如果语句足够,则只需5个。您可以使用+=运算符构建字符串。像
passArg+=“Thu”
passArg+=“Fri”
etc@M.kazemAkhgary如果不选中,您将如何进行减法?您不能只使用
-=
“未连接”字符串…@Tinwor您不能为现有类重载运算符。你不能从
字符串中派生,因为它是密封的。好吧,我需要睡觉了。谢谢你的更正。你想要一个switch语句吗?如果语句足够的话,只需要5个。您可以使用+=运算符构建字符串。像
passArg+=“Thu”
passArg+=“Fri”
etc@M.kazemAkhgary如果不选中,您将如何进行减法?您不能只使用
-=
“未连接”字符串…@Tinwor您不能为现有类重载运算符。你不能从
字符串中派生,因为它是密封的。好吧,我需要睡觉了。谢谢你的纠正,但我有5天不同的时间。用户可以选择任意天数组合。这需要我有许多不同的if语句来预测每一个combo@DhavalDesai您的示例仅显示了passArg中的一天。如果您需要与任何天数组合进行比较,则显示在这种情况下,passArg将是什么。在任何情况下,你都不必在单独的
if
语句中检查“每一个组合”。但我有5个不同的日子。用户可以选择任意天数组合。这需要我有许多不同的if语句来预测每一个combo@DhavalDesai您的示例仅显示了passArg中的一天。如果您需要与任何天数组合进行比较,则显示在这种情况下,passArg将是什么。在任何情况下,您都不必在单独的
if
语句中检查“每个组合”。