Rikansha kumar Ответов: 2

Как показать общую стоимость в метке, когда пользователь выбирает случайные переключатели и флажки?


Это мой код на данный момент. Не могли бы вы сказать мне, что еще добавить, чтобы показать общую стоимость в метке, когда пользователь выбирает случайные переключатели и флажки?

приложение windows, которое помогает администратору генерировать квоту на продажу гостиничного номера для семьи на одну ночь пребывания в отеле. Вы должны выбрать подходящее имя для вашего приложения. В отеле есть только 3 типа номеров, а завтрак "шведский стол" и ужин предоставляются за дополнительную плату. Помимо интернета, развлечений и спа-услуг, все остальные удобства отеля предоставляются бесплатно.

Тип номера = (радиобуттоны) a.люкс $210 b. Супериор $150 c. СТАНДАРТ $110 питание (флажки) a. Завтрак $40 b. ужин$60

Удобства (флажки) a. Интернет$10 b. развлечения – платные фильмы$20 c. спа-услуги$50 все это имеет постоянные цены ............................. приведенный ниже код-это то, что я делал до сих пор. не могли бы вы, пожалуйста, помочь мне, как отобразить общую стоимость на этикетке
Public Class frmThePearlResortFiji

Private Sub frmThePearlResortFiji_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    lblDate.Text = Date.Now
End Sub

Private Sub btnTotalCost_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTotalCost.Click

    lblTotalCost.Text = "YOU HAVE ORDERED:" & vbNewLine

    lblTotalCost.Text = lblTotalCost.Text & "ROOM TYPE" & vbNewLine & "--------" & vbNewLine

    If radLuxury.Checked Then
        lblTotalCost.Text = lblTotalCost.Text & "Luxury = $210" & vbNewLine
    ElseIf radSuperior.Checked Then
        lblTotalCost.Text = lblTotalCost.Text & "Superior = $150" & vbNewLine
    Else
        lblTotalCost.Text = lblTotalCost.Text & "Standard = $110" & vbNewLine
    End If

    lblTotalCost.Text = lblTotalCost.Text & vbNewLine & "MEAL OPTIONS" & vbNewLine & "--------" & vbNewLine

    If chkBufferBreakfast.Checked Then
        lblTotalCost.Text = lblTotalCost.Text & "Buffer Breakfast = $40" & vbNewLine
    End If
    If chkBufferDinner.Checked Then
        lblTotalCost.Text = lblTotalCost.Text & "Buffer Dinner = $60" & vbNewLine
    End If

    lblTotalCost.Text = lblTotalCost.Text & vbNewLine & "AMENITIES" & vbNewLine & "--------" & vbNewLine

    If chkInternet.Checked Then
        lblTotalCost.Text = lblTotalCost.Text & "Internet = $10" & vbNewLine
    End If
    If chkEntertainment.Checked Then
        lblTotalCost.Text = lblTotalCost.Text & "Entertainment = $20" & vbNewLine
    End If
    If chkSpaServices.Checked Then
        lblTotalCost.Text = lblTotalCost.Text & "Spa Services = $50" & vbNewLine
    End If

    lblTotalCost.Text = decLuxury + decSuperior + decStandard


End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
    Me.Close()
End Sub

Private Sub radLuxury_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radLuxury.CheckedChanged
    picSuperior.Visible = False
    picStandard.Visible = False
    picLuxury.Visible = True

End Sub

Private Sub radSuperior_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radSuperior.CheckedChanged
    picLuxury.Visible = False
    picStandard.Visible = False
    picSuperior.Visible = True
End Sub

Private Sub radStandard_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radStandard.CheckedChanged
    picSuperior.Visible = False
    picLuxury.Visible = False
    picStandard.Visible = True
End Sub

Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
    lblTotalCost.Text = ""
    radLuxury.Checked = False
    radSuperior.Checked = False
    radStandard.Checked = False

    chkBufferBreakfast.Checked = False
    chkBufferDinner.Checked = False

    chkEntertainment.Checked = False
    chkInternet.Checked = False
    chkSpaServices.Checked = False

    picLuxury.Image = Nothing
    picSuperior.Image = Nothing
    picStandard.Image = Nothing

End Sub
End Class


Что я уже пробовал:

я так и делал до сих пор . не могли бы вы подсказать мне, что добавить, чтобы показать общую стоимость на этикетке, которая является lblTotalCost

2 Ответов

Рейтинг:
0

OriginalGriff

Это довольно запутанный код, который у вас там есть.

Вернитесь на несколько этапов назад и заново подумайте, как вы это делаете.
Я бы создал класс ChargeableItem, содержащий три свойства:

Description    String
Cost           Decimal
Currency       String
А затем переопределите метод ToString для этого класса, чтобы вернуть читаемую человеком версию:
Public Overrides Function ToString() As String
    Return $"{Description} - {Currency}{Cost}"
End Function
Если вы установите свойство Tag каждого RadioButton и CheckBox на экземпляр класса, вы сможете получить доступ к нему, когда они будут выбраны, и ваши значения будут готовы для вас, без необходимости дальнейшей обработки.
Вы даже можете автоматизировать отображение, используя панель для хранения каждой "группы опций" и добавляя к ней кнопки или флажки, когда ваша форма создается из коллекции класса.

Это означает, что вы можете хранить "данные о ценах" в файле или базе данных, а не "жестко кодировать" их в своем приложении - и это означает, что когда цены или доступность меняются, вы можете отразить это в своем приложении гораздо легче. Вы также можете справиться с различными валютами очень просто, чтобы позволить иностранным посетителям понять затраты в своей собственной валюте!


Ralf Meier

Привет Грифф,
Я наткнулся на ваш ответ на этот вопрос.
У меня также есть решение этой проблемы, которое на самом деле гораздо проще (и гораздо понятнее), чем этот подход, но теперь я гораздо больше заинтересован в вашем.
Я не понял вашего предложения - не будете ли вы так добры объяснить его мне, потому что, возможно, это может быть подход, который немного облегчает мою работу ...
Овации
Ральф