我在Visual Basic课堂上练习时遇到麻烦。
我需要使用一个子过程来识别是否选中了某些单选按钮,并使它们增加了产品的销售成本。
然后,我需要在btnClick
过程中引用它们,以便可以使用它来显示字符串的开销。
参考说明:
Mats-R-Us sells three different types of mats:<br>
- Standard ($99),<br>
- Deluxe ($129),<br>
- INTERMEDIATE Premium ($179).<br>
All of the mats are available in:<br>
- blue,<br>
- red ($10 extra), <br>
- pink ($15 extra). <br>
如果客户希望垫子是可折叠的,还需要另外收取25美元的费用。
创建Windows窗体应用程序。将以下名称用于 项目和解决方案分别为:Mats项目和Mats解决方案。 将应用程序保存在VB2017 \ Chap06文件夹中。创建界面 如图6-58所示。使用功能确定垫子的价格 无需支付任何额外费用。使用Sub过程来计算 总额外费用(如果有)。
我当前拥有的代码:
Option Explicit On
,Option Strict On
,Option Infer Off
Public Class frmMain
Private Function GetStandard(dblTotal As Double) As Double
Dim dblPrice As Double
If radStandard.Checked Then
dblPrice = 99
ElseIf radDeluxe.Checked Then
dblPrice = 129
ElseIf radPremium.Checked Then
dblPrice = 179
End If
Return dblPrice
dblPrice = dblTotal
End Function
Private Sub AddColorCost(ByRef dblTotal As Double)
Dim dblPrice As Double
If radRed.Checked Then
dblPrice = dblPrice + 10
ElseIf radPink.Checked Then
dblPrice = dblPrice + 15
End If
End Sub
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
Dim DblTotal As Double
Call AddColorCost(dblTotal)
lblPrice.Text = dblTotal.ToString("C2")
End Sub
Private Sub BtnExit_Click(sender As Object, e As EventArgs) Handles BtnExit.Click
Me.Close()
End Sub
End Class
编辑:我试图在子功能中包括价格上涨,但是调试所有内容时,唯一显示的数字是$ 0。
答案 0 :(得分:1)
让我们按照说明进行操作。 使用功能确定垫子的价格,然后再收取其他费用。
Private Function BaseCost() As Decimal
Dim dblPrice As Decimal
If radStandard.Checked Then
dblPrice = 99
ElseIf radDeluxe.Checked Then
dblPrice = 129
ElseIf radPremium.Checked Then
dblPrice = 179
End If
Return dblPrice
End Function
使用Sub过程计算总附加费用(如果有)。
由于我们使用Sub而不返回值,因此我们将使用Form级别(类级别)变量,以便其他方法可以看到它。另一种方法是传递参数ByRef,但现在不必担心。
AddChanges += 10
是编写AddChanges = AddChanges + 10
'This variable is Form level (class level) it is not inside a method but it is inside the class.
Private AddCharges As Decimal
Private Sub AdditionalCharges()
If radRed.Checked Then
AddCharges += 10
ElseIf radPink.Checked Then
AddCharges += 15
End If
If chkFoldable.Checked Then
AddCharges += 25
End If
End Sub
现在将其全部添加到“计算”按钮中
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
Dim Total As Decimal
'BaseCost is a Function and returns a value
Total = BaseCost()
'AdditionalCharges is a Sub and will change the Form level variable
AdditionalCharges()
Total += AddCharges
lblPrice.Text = Total.ToString("C2")
'reset AddCharges so you can make different selections and Calculate again.
AddCharges = 0
End Sub