Проблемы с обратным вызовом переменных - PullRequest
0 голосов
/ 22 ноября 2018

У меня проблемы с упражнением в моем классе 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 Forms.Используйте следующие имена для проекта и решения, соответственно: Mats Project и Mats Solution.Сохраните приложение в папке VB2017 \ Chap06.Создайте интерфейс, показанный на рисунке 6-58.Используйте функцию, чтобы определить цену мата перед любыми дополнительными расходами.Используйте процедуру Sub для расчета общего дополнительного заряда (если есть).

Код, который у меня есть на данный момент:
Option Explicit On, Option Strict On, Option Infer Off

enter image description here

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 - это единственное число, которое отображается, когда я отлаживаю все.

1 Ответ

0 голосов
/ 22 ноября 2018

Давайте следовать инструкциям.Используйте функцию, чтобы определить цену мата перед любыми дополнительными расходами.

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 и не возвращаем значение, мы будем использовать переменную уровня формы (уровня класса), чтобы другие методы могли ее увидеть.Другим подходом было бы передать параметр 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...