0

我的 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 语句。有什么指导吗?

4

3 回答 3

3

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

只需将 if 语句展平,不要嵌套它们,如下所示:

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

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

...ETC...

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

于 2013-03-13T15:05:21.503 回答
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 ','
于 2013-03-13T15:05:08.507 回答
0

是的,你的问题是你嵌套了你的 if 语句,这就是为什么周四被跳过,因为周三被证明是错误的。

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

于 2013-03-13T15:11:22.373 回答