Ave Maleficum
Ave Maleficum

Reputation: 117

Why this group Hide/Show code didn't work?

I want to write codes that when checkbox is clicked, the hidden group box is shown, and then do the simple calculations. Here are my codes:

Public Class frmMenu
    Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
        Dim Burgers, Fries, Drinks, sum As Double
        If chkBurgers.Checked Then
            grpBurgers.Visible = True
            If radRegular.Checked Then
                Burgers = 4.19
            ElseIf radWcheese.Checked Then
                Burgers = 4.79
            ElseIf radWbacon.Checked Then
                Burgers = 4.79
            ElseIf radWbcheese.Checked Then
                Burgers = 5.39
            End If
        End If
        If chkFries.Checked Then
            grpFries.Visible = True
            If radSmall.Checked Then
                Fries = 2.39
            ElseIf radMedium.Checked Then
                Fries = 3.09
            ElseIf radLarge.Checked Then
                Fries = 4.99
            End If
        End If
        If chkDrinks.Checked Then
            grpDrinks.Visible = True
            If radSoda.Checked Then
                Drinks = 1.69
            ElseIf radBottled.Checked Then
                Drinks = 1.49
            End If
        End If
        sum = Burgers + Fries + Drinks
        txtCost.Text = sum.ToString("C")
    End Sub
End Class

I use

If chkBurgers.Checked Then
    grpBurgers.Visible = True

to show hidden group box, but it did not work in VB 2012, what's wrong with my code? It seems pretty to me.

Upvotes: 0

Views: 159

Answers (1)

Nadeem_MK
Nadeem_MK

Reputation: 7699

The problem is that you are managing the visibility on button press, which should instead be done on checking the checkboxes. I would have proceeded as the below;

Public Class frmMenu

Private Burgers, Fries, Drinks, sum As Double

Private Sub chkBurgers_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkBurgers.CheckedChanged


       grpBurgers.Visible = chkBurgers.Checked 
       If chkBurgers.Checked then
        Select case True
         Case radRegular.Checked 
                Burgers = 4.19
         Case radWcheese.Checked  
                Burgers = 4.79
         Case radWbacon.Checked  
                Burgers = 4.79
         Case radWbcheese.Checked  
                Burgers = 5.39
         Case else
                Burgers = 0.00
       End Case

      End If
End Sub

Private Sub chkFries_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkFries.CheckedChanged

       grpFries.Visible = chkFries.Checked
       If chkFries.Checked then
        Select case True
         Case radSmall.Checked 
                Fries = 2.39
         Case radMedium.Checked  
                Fries = 3.09
         Case radLarge.Checked  
                Fries = 4.99
         Case else
                Fries = 0.00
       End Case

      End If
 End Sub

 Private Sub chkDrinks_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkDrinks.CheckedChanged

      grpDrinks.Visible = chkDrinks.Checked 
       If chkDrinks.Checked then
        Select case True
         Case radSoda.Checked
                Drinks = 1.69
         Case radBottled.Checked  
                Drinks = 1.49 
         Case else
                Fries = 0.00
       End Case

      End If
End Sub

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

      sum = Burgers + Fries + Drinks
      txtCost.Text = sum.ToString("C")

End Sub

End Class

Upvotes: 2

Related Questions