Возможен ли комбинированный список, что стоимость мобильных деталей для отображения общей стоимости в ярлыке, как в vb? - PullRequest
0 голосов
/ 02 января 2019

Я занимаюсь программированием заданий и Принципами проектирования, я написал код для этой кнопки и чекбокса, а также отображение общей стоимости на этикетке, но должен ли я поставить поле со списком для производителя: Apple, Samsung или Sony?потому что я думаю, что невозможно поместить мобильные данные стоимость в ярлык

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


    ComboManfacturer.Items.Add("Apple")
    ComboManfacturer.Items.Add("Samsung")
    ComboManfacturer.Items.Add("Sony")

    ComboManfacturer.SelectedItem = 0

    End Sub 



     Private Sub BtnCalc_Click(sender As Object, e As EventArgs) Handles 
     BtnCalc.Click

    'Declaring
    Const CostApple As Double = 1000
    Const CostSamsung As Double = 500
    Const CostSony As Double = 300


   'put mobile as total cost display in a label 
   Combobox.SelectIndex("Apple" & CostApple)
   Combobox.SelectIndex("Samsung" & CostSamsung)
   Combobox.SeleectIndex("Sony" & CostSony)


    'process - where you figure out answers which total cost in the label
    Total = quantity * Total


    'output
    LblTotal.Text = FormatCurrency(Total)

1 Ответ

0 голосов
/ 02 января 2019

Ваша проблема может заключаться в том, какие события вы используете для своего кода.Заполните поле со списком в событии загрузки формы.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ComboBox2.Items.Add("Apple")
    ComboBox2.Items.Add("Samsung")
    ComboBox2.Items.Add("Sony")
End Sub

Затем в событии ComboBox SelectionChangeCommitted укажите соответствующие значения.

Private Sub ComboBox2_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox2.SelectionChangeCommitted
    Dim s As String = ""
    Select Case ComboBox2.SelectedItem.ToString
        Case "Apple"
            s = "1000"
        Case "Samsung"
            s = "500"
        Case "Sony"
            s = "300"
    End Select
    Label1.Text = s
End Sub

Было бы лучше использовать класс, предложенный @Джими, но я предоставляю это решение, если вы еще не знакомы с классами.

Select Case можно заменить серией операторов If, если инструкция Case еще не была введена в вашем курсе.

    If ComboBox2.SelectedItem.ToString = "Apple" Then
        s = "1000"
    End If

РЕДАКТИРОВАТЬ

Private Function GetSelectedRadioButton(ctrl As ContainerControl) As RadioButton
    Dim rButton As RadioButton = ctrl.Controls.OfType(Of RadioButton).FirstOrDefault(Function(r) r.Checked = True)
    Return rButton
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'Use Decimal datatype for money
    Dim Total As Decimal
    'Get cost form radio button
    Dim rb As RadioButton = GetSelectedRadioButton(Me)
    'Put the cost for the each radio button in the .Tag property of the button
    Total += CDec(rb.Tag)
    'Get cost from check boxes
    For Each ctrl As Control In Controls
        If TypeOf ctrl Is CheckBox AndAlso DirectCast(ctrl, CheckBox).Checked Then
            'Store the cost in the .Tag property of the checkbox
            Total += CDec(ctrl.Tag)
        End If
    Next
    'Get cost from combobox
    Dim d As Decimal
    Select Case ComboBox2.SelectedItem.ToString
        Case "Apple"
            d = 1000
        Case "Samsung"
            d = 500
        Case "Sony"
            d = 300
    End Select
    Total += d
    Dim Quantity as Decimal = CDec(txtQuantity.Text)
    Total = Quantity * Total
    Label1.Text = Total.ToString
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...