IF声明为星期几

时间:2013-03-13 14:59:44

标签: if-statement dayofweek

我的winForm上有一组7个复选框,允许用户选择要创建订单的一周中的哪一天。我正在尝试创建正确实现这些复选框决策的IF语句。我已尝试过If,IfElse和Select语句的多种组合,但都无济于事。

If cbMon.Checked = True Then
            .WriteString("Monday")
            If cbTues.Checked = True Then
                .WriteString("Tuesday")
                If cbWed.Checked = True Then
                    .WriteString("Wednesday")
                    If cbThur.Checked = True Then
                        .WriteString("Thursday")
                        If cbFri.Checked = True Then
                            .WriteString("Friday")
                            If cbSat.Checked = True Then
                                .WriteString("Saturday")
                                If cbSun.Checked = True Then
                                    .WriteString("Sunday")
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If

到目前为止,我所拥有的是最好的。但问题是,如果我在winForm上检查“星期一,星期二和星期四”......星期一和星期二会出现,但周四会被跳过,因为它显然会突破if语句。有什么指导吗?

3 个答案:

答案 0 :(得分:3)

问题是你不应该嵌套你的if语句。 在您的示例中,代码的任何部分仅在检查前一天(一直到星期一)时才会被检查。

简单地压扁if语句,不要嵌套它们,如下所示:

If cbMon.Checked = True Then
            .WriteString("Monday")
End If

If cbTue.Checked = True Then
            .WriteString("Tuesday")
End If

...等...

如果您希望用户只选择一个选项,则下拉列表或单选按钮列表可能更适合而不是复选框。

答案 1 :(得分:1)

不要使用嵌套

这里只需要简单的循环

Initialise an array

if monday
 add monday to array


if tuesday checked
 add tuesday to array

.
.
.
if sunday checked
 add sunday to array



get the string by append all values in array with ','

答案 2 :(得分:0)

是的,你的问题是你正在嵌套if语句,这就是周四被跳过的原因,因为星期三被证明是错误的。

您需要做的是运行一个for循环,该循环将遍历每个复选框并检查其选中的值是否为真。