Метка не показывает, для чего она была закодирована

#vb.net

#vb.net

Вопрос:

 totalprice = cost   cost1   cost2   cost3   cost4
Form2.Label24.Text = totalprice
vat = totalprice * 0.2
Form2.Label26.Text = vat
Form2.Label27.Text = totalprice   vat
totalpricevat = totalprice   vat
Form2.Show()
finance = finance1   totalpricevat
finance1 = totalpricevat * 0.05
finance2 = finance / 12
finance3 = totalpricevat * 0.1
finance4 = finance / 24
If ListBox1.SelectedItem = "12 Months" Then Form2.Label33.Text = finance2
If ListBox1.SelectedItem = "24 Months" Then Form2.Label33.Text = finance4

  

Выше приведен фрагмент кода, который я сделал для расчета финансирования нескольких выбранных элементов.

Label33 должен показывать результат finance2 и / или finance4 в зависимости от того, какой элемент выбран из listbox1, однако он работает не так, как предполагалось, он просто показывает «Label33». Как я могу заставить Label33 отображать результат finance2 и / или finance4. Это очень странно, потому что на прошлой неделе (когда я набирал этот код) он показывал его нормально. Сегодня я запустил программу, чтобы проверить, все ли работает нормально, и это происходит.

Я был бы признателен за любую помощь и, пожалуйста, объясните каждую часть вашего ответа, поскольку я довольно новичок в Visual Basic

Заранее спасибо!

Комментарии:

1. Попробуйте установить точку останова и выполнить отладку. Я думаю, что найти проблему довольно легко, мой друг.

2. Вы должны дать своим элементам управления значимые имена. Label33 и т. Д. Не Являются значимыми именами.

3. Пожалуйста, и не могу подчеркнуть это достаточно. Как говорит Мэри, приличные значимые имена для элементов управления и переменных. Это не для нашей пользы, это для вашей собственной. Кроме того, проблема, скорее всего, будет в ListBox1.SelectedItem не равен ни «12 месяцам», ни «24 месяцам». Я был бы удивлен, если бы это когда-нибудь произошло, поскольку SelectedItem возвращает объект, который вы сравниваете со строкой. Возможно, listBox1.SelectedItem. toString() — это исправление?

4. Поворот Option Strict On .

Ответ №1:

Вы никогда не используете finance3 в своем коде. Вы взимаете точно такую же финансовую плату за 1 год, как и за 2 года. Это сделка, которую я бы хотел. Я знаю, что это упражнение требует от вас быть одновременно бухгалтером и программистом. У вас есть значение finance1, вычисленное после того, как вы используете его для вычисления finance1 .

Я добавил значения для переменных стоимости, чтобы я мог протестировать.

Я выполнил расчеты для финансов в операторе If, поэтому вы рассчитали только один вариант.

 Private Sub OPCode()
    Dim cost = 10D, cost1 = 20D, cost2 = 30D, cost3 = 40D, cost4 = 50D
    Dim totalprice = cost   cost1   cost2   cost3   cost4
    Form2.Label24.Text = totalprice.ToString("N2")
    Dim vat = totalprice * 0.2
    Form2.Label26.Text = vat.ToString("N2")
    Form2.Label27.Text = (totalprice   vat).ToString("N2")
    Dim totalpricevat = totalprice   vat
    'Dim finance3 = totalpricevat * 0.1   You never use this in your code.
    If ListBox1.SelectedItem.ToString = "12 Months" Then
        Dim finance = totalpricevat * 1.05 / 12
        Form2.Label33.Text = finance.ToString("N2")
    ElseIf ListBox1.SelectedItem.ToString = "24 Months" Then
        Dim finance = totalpricevat * 1.1 / 24 ' .1 is .05 x 2, interest for 2 years
        Form2.Label33.Text = finance.ToString("N2")
    End If
    Form2.Show()
End Sub