0

まず、これは私が取り組んでいた宿題でしたが、このように機能させることができませんでした。そのため、Ifステートメントを使用して割り当てを完了する必要がありました。目的は、基本的に、ユーザーが注文を送信するために入力できるフォームを作成することでした。3つのチェックボックスがあります(1つはハンバーガー用、1つはフライドポテト用、もう1つは飲み物用)。ボックスの1つをチェックすると、必要な選択を行うためのラジオボタンを含むグループボックスが表示されます。

チェックボックスがオンになっているかどうかに基づいて、selectステートメントを使用してみたかったのです。次に、ラジオボタンごとに異なるケースを使用します。ただし、プログラムを実行して、指定した1つのボタンをクリックすると、dblCost変数に使用可能な最初のケースが入力されます。以下は私のコードです。私は自分が何を間違っていたのか、あるいはこれがこの問題に取り組むための実行可能な方法ではないのかどうかを本当に理解したいと思っています。以下は私が使用したかったコードです:

Public Class frmRestaurantOrder

Private Sub CheckedChanged(sender As Object, e As EventArgs) Handles cbxBurgers.CheckedChanged, cbxFries.CheckedChanged, cbxDrinks.CheckedChanged

    If (cbxBurgers.Checked) Then
        gbxBurgers.Visible = True
    Else
        gbxBurgers.Visible = False
    End If

    If (cbxFries.Checked) Then
        gbxFries.Visible = True
    Else
        gbxFries.Visible = False
    End If

    If (cbxDrinks.Checked) Then
        gbxDrinks.Visible = True
    Else
        gbxDrinks.Visible = False
    End If

End Sub

Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click

    Dim dblCost As Double = 0

    Select Case gbxBurgers.Visible = True
        Case rbtRegularBurger.Checked
            dblCost += 4.19
        Case rbtCheeseBurger.Checked
            dblCost += 4.79
        Case rbtBaconBurger.Checked
            dblCost += 4.79
        Case rbtBaconCheeseBurger.Checked
            dblCost += 5.39
        Case Else
            dblCost += 0
    End Select

    Select Case cbxFries.Checked = True
        Case rbtSmallFries.Checked
            dblCost += 1.29
        Case rbtLargeFries.Checked
            dblCost += 1.59
        Case Else
            dblCost += 0
    End Select

    Select Case cbxDrinks.Checked = True
        Case rbtSoda.Checked
            dblCost += 1.69
        Case rbtWater.Checked
            dblCost += 1.49
        Case Else
            dblCost += 0
    End Select

    txtCost.Text = FormatCurrency(dblCost)

End Sub

エンドクラス

4

2 に答える 2

0

選択したケースについてのあなたの理解は少しずれていると思います。これを見て、それが役立つかどうかを確認してください。

于 2013-03-27T00:09:52.667 に答える
0

特に質問に対応しているわけではありませんが、コードを記述するためのより短い方法を検討することもできます。

それよりも:

If (cbxBurgers.Checked) Then
    gbxBurgers.Visible = True
Else
    gbxBurgers.Visible = False
End If

あなたは書ける:

gbxBurgers.Visible = cbxBurgers.Checked

小さなことですが、コードが大幅に短くなります。

于 2013-03-27T00:38:24.953 に答える