2013-11-03 130 views
0

我对此很陌生,并且很困惑,为什么当点击计算按钮时,总计就没有了。任何指导或指出错误将不胜感激。GroupBox的计算(单选按钮)

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 
+0

你得到了Group Box中的IntegerValues Enter事件 - 如果用户不去那里,值不会设置被选中。 YOu可以并且应该在按钮点击事件中设置'IntegerValueX'变量,当它们在计算之前不再变化时。此外,尝试'SubTotal.Text =(IntegerValue1 + IntegerValue2).ToString' – Plutonix

+0

谢谢你的回答我基本上拿出了组框if/else语句,并把它所有的计算按钮事件,它的工作。 – JLM

+1

要添加另一个观察值,RadioButton.Checked属性是一个布尔值,您不必说如果RadioButton.Checked = True,就像说If True = True。只要说如果RadioButton.Checked然后.... –

回答

0

一个更清洁的方式为一个值相关联,并捕获这将是值(.65 0.85等)分配给每个RB的.Tag属性,然后抓住它,当他们点击。这样你就弄死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个事件处理它们。修改第2组中其中一个RB的点击以完成相同操作(此为IntegerValue2)。现在,当用户选择时,值被设置。确保删除旧的/额外的事件处理程序,并确保每个组中的一个RB被选中,以便在窗体加载时设置变量。如果你添加更多的甜甜圈/饼干等,也一定要添加一个新的Handler和它的TAG值。