2016-01-05 4 views
0

Это мой первый раз, когда я использую визуальную студию, и я столкнулся с ошибкой с моим приложением для налогового калькулятора. Проблема заключается в том, что визуальная студия говорит, что линия умножения с использованием «*» и «+» не может быть выполнена из-за того, что переменные являются текстовыми полями. Итак, мой вопрос для сообщества, должен ли я изменить текстовое поле на что-то еще? Или где в моем коде я испортил.Ошибка кода кнопки Visual Studio

Public Class Form1 
    Private Sub btnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalc.Click 
     If (IsNumeric(txtSale) And IsNumeric(txtSalesTaxRate)) Then 
      lblTax = txtSale * txtSalesTaxRate 
      lblTotal = txtSale + lblTax 
     Else 
      MsgBox("Please enter valid numbers, thank you!") 
     End If 

    End Sub 
End Class 

Если вам нужно, чтобы я предоставил вам полную схему моего приложения, спросите.

+1

Вы ссылаетесь на текстовое поле, а не на свойство Текст. Используйте txtSale.Text вместо –

+2

Кроме того, вы должны работать с опцией «strict on on» :) – ImDeveloping

+0

Спасибо, Марк Холл, ImDeveloping! Я попробую. – Relogical

ответ

1

Я вижу несколько проблем в вашем коде. Я объясню, как работает «vs». Текстовые поля, которые вы создали, являются элементами управления.
Вы не можете просто сделать свое значение таким простым. У них много свойств, и один из них - .text, который позволяет вам принимать значение внутри них.
Другая ошибка, которую вы сделали, - это то, что вы пытались сделать с текстовыми полями. Что вы вводите в этих текстовых файлах, это текст .well. Программа не может определить, является ли значение внутри числом или просто текстом. Вы должны преобразовать это значение в число, используя Cint.
Так вы код будет выглядеть следующим образом:

Public Class Form1 
Private Sub btnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalc.Click 
    If (IsNumeric(txtSale.text) And IsNumeric(txtSalesTaxRate.text)) Then 
     lblTax.text= cint(txtSale.text) * cint(txtSalesTaxRate.text) 
     lblTotal.text= cint(txtSale.text) + cint(lblTax.text) 
    Else 
     MsgBox("Please enter valid numbers, thank you!") 
    End If 

End Sub 
End Class 

Что CInt делает, чтобы преобразовать каждый тип данных Integer. Также свойство .text позволяет установить значение элемента управления (в нашем случае подпись ярлыка)

+2

'.Text' не является функцией, это свойство. Просто небольшая заметка перфекциониста. ;) –

+2

'.Text' не является функцией, это свойство. И преобразование ставки налога в целое число может быть неправильным, если оно имеет десятичные значения. Другой текст может выйти из строя, если пользователь вводит другие символы, поэтому следует использовать «TryParse». – Plutonix

1

Я пробовал код Electric-web и столкнулся с проблемой с выходом. Я изменил «CInt» на «CDbl», и калькулятор налога работал.

Public Class Form1 
Private Sub btnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalc.Click 
    If (IsNumeric(txtSale.text) And IsNumeric(txtSalesTaxRate.text)) Then 
     lblTax.text= cdbl(txtSale.text) * cdbl(txtSalesTaxRate.text) 
     lblTotal.text= cdbl(txtSale.text) + cdbl(lblTax.text) 
    Else 
     MsgBox("Please enter valid numbers, thank you!") 
    End If 

End Sub 
End Class 
+0

Вы также можете попробовать convert.ToInt или удвоить, вы хотите, чтобы числа не округлялись –

Смежные вопросы