Search code examples
vb.netwinformscheckboxgroupbox

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.


Solution

  • 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