2013-09-25 2 views
1

У меня есть функция, которая вычисляет totalPrice и возвращает ее в моей totalPriceOutputLabel. Моя проблема в том, что мне нужно, чтобы результат был отформатирован как таковой «1,222», например. Я знаю, как преобразовать его как таковой, используяПреобразование строки Visual Basic в формат валюты

ToString("C2") 

но я не уверен, как подключить его к моей функции. Есть идеи?

Public Class tileLimitedForm 

Private enteredLength, enteredWidth As Double 
Private enteredPrice As Decimal 

Public Function area(ByRef enteredLength As Double, ByRef enteredWidth As Double) 
    area = Val(enteredLength) * Val(enteredWidth) 
End Function 

Public Function totalPrice(ByRef enteredLength As Double, ByRef enteredWidth As Double) 
    totalPrice = Val(area(enteredLength, enteredWidth)) * Val(enteredPrice) 
End Function 

Private Sub calculateButton_Click(sender As Object, e As EventArgs) Handles calculateButton.Click 

totalPriceOutputLabel.Text = totalPrice(area(enteredLength, enteredWidth),enteredPrice).ToString("C2") 

End Sub 
+1

Почему * calculateButton_Click * и * totalPrice * делают то же самое (кроме формата). Это ошибка при редактировании? (* всегоPrice * функция в настоящее время вызывает * итогоPrice *) – Chris

+0

Я сделал, это была моя ошибка. Я обновил оригинальную публикацию. Спасибо – user1695704

+0

Молодец. Спасибо. – user1695704

ответ

1

Так же, как это:

totalPriceOutputLabel.Text = _ 
    totalPrice(area(enteredLength, enteredWidth), enteredPrice).ToString("C2") 

Это предполагает totalPrice является Double или другой числовой тип, который поддерживает .ToString() расширение с параметром формата.

EDIT

Осмотрев отредактированный вопрос:

Public Class tileLimitedForm 

     Private enteredLength, enteredWidth As Double 
     Private enteredPrice As Decimal 

     Public Function area(ByVal enteredLength As Double, ByVal enteredWidth As Double) As Double 
      area = enteredLength * enteredWidth 
     End Function 

     Public Function totalPrice(ByVal enteredLength As Double, ByvalenteredWidth As Double) As Double 
      totalPrice = area(enteredLength, enteredWidth) * enteredPrice 
     End Function 

     Private Sub calculateButton_Click(sender As Object, e As EventArgs) Handles calculateButton.Click 
      totalPriceOutputLabel.Text = totalPrice(area(enteredLength, enteredWidth), enteredPrice).ToString("C2") 
     End Sub 
    End Class 

Примечания:

  • Вы должны использовать ByVal вместо ByRef в вашей функции в этом случае
  • Ваша функция в настоящее время возвращает Object, так как вы не задаете тип, возвращающий функцию (у вас есть опция Strict off) => Я добавил As Double.
  • Не нужно использовать Val, поскольку параметры уже являются числовыми типами.
+0

При реализации того, что вы написали, я получаю сообщение об ошибке необработанного исключения, указывающего на («C2»). Эта ошибка на самом деле не объясняет, как справиться с этим. – user1695704

+0

@ user1695704 Какой тип возвращает функцию * totalPrice *? Каб вы редактируете вопрос со всем методом? – Chris

+0

Метод обновлен. Спасибо. – user1695704

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