0

私はこれに不慣れで、計算ボタンをクリックすると合計がずれる理由について混乱しています。ガイダンスや間違いの指摘は大歓迎です。

Public Class Form1

Dim IntegerValue1 As Double
Dim IntegerValue2 As Double


Private Sub GroupBox1_Enter(sender As Object, e As EventArgs) Handles GroupBox1.Enter
    If RadioGlazed.Checked = True Then
        IntegerValue1 = 0.65
    ElseIf RadioSugar.Checked = True Then
        IntegerValue1 = 0.65
    ElseIf RadioChocolate.Checked = True Then
        IntegerValue1 = 0.85
    ElseIf RadioFilled.Checked = True Then
        IntegerValue1 = 1.0
    End If
End Sub

Private Sub GroupBox2_Enter(sender As Object, e As EventArgs) Handles GroupBox2.Enter
    If RadioNone.Checked = True Then
        IntegerValue2 = 0.0
    ElseIf RadioRegular.Checked = True Then
        IntegerValue2 = 1.8
    ElseIf RadioCapp.Checked = True Then
        IntegerValue2 = 2.5
    End If
End Sub


Private Sub ButtonCalc_Click(sender As Object, e As EventArgs) Handles ButtonCalc.Click

    SubTotal.Text = (IntegerValue1) + (IntegerValue2)

End Sub
4

1 に答える 1

0

値を関連付けてキャプチャするよりクリーンな方法は、値 (.65、.85 など) を.Tag各 RB のプロパティに割り当て、クリックしたときにそれをキャプチャすることです。これにより、SELECT CASE または IF/ELSEIF を完全に廃止できます。

Private Sub RBGroup1_CheckedChanged(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles RadioGlazed.CheckedChanged, _
         RadioSugar.CheckChanged       
         ' add for each RB in the group

   IntegerValue1 = CType(sender, RadioButton).Tag
   ' may only need:
   'IntegerValue1 =sender.Tag

End Sub

1 つのハンドラーにより、1 つのイベントでそれらすべてを処理できます。グループ 2 の RB の 1 つのクリックを変更して、同じことを行います (これは の場合IntegerValue2)。これで、ユーザーが選択すると、値が設定されます。古い/余分なイベント ハンドラーを必ず削除し、各グループの 1 つの RB が最初に選択されていることを確認して、フォームが読み込まれたときに変数が設定されるようにします。また、ドーナツ/クッキーなどをさらに追加する場合は、必ず新しいハンドラーとその TAG 値を追加してください。

于 2013-11-03T01:24:39.593 に答える