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

...等...

ユーザーに 1 つのオプションのみを選択させたい場合は、チェックボックスよりもドロップダウン リストまたはラジオ ボタン リストの方が適している可能性があります。

于 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 ステートメントをネストしていることです。これが、水曜日が false であることが判明したため、木曜日がスキップされる理由です。

必要なことは、各チェック ボックスを通過する for ループを実行し、チェックされた値が true かどうかを確認することです。

于 2013-03-13T15:11:22.373 に答える