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

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
user1695704 25 Сен 2013 в 08:00
1
Почему calculateButton_Click и totalPrice делают одно и то же (кроме формата). Ошибка при редактировании? (функция totalPrice в настоящее время вызывает totalPrice )
 – 
Chris
25 Сен 2013 в 08:47
Я сделал, это была моя ошибка. Я обновил исходную публикацию. Спасибо
 – 
user1695704
25 Сен 2013 в 08:50
Отличная работа. Спасибо.
 – 
user1695704
25 Сен 2013 в 09:08

1 ответ

Лучший ответ

Именно так:

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

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

ИЗМЕНИТЬ

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

 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, поскольку вы не установили тип, который возвращает функцию (у вас отключена опция Option Strict) => Я добавил As Double.
  • Нет необходимости использовать Val, поскольку параметры уже являются числовыми типами.
0
Chris 25 Сен 2013 в 08:57
При реализации того, что вы написали, я получаю сообщение об ошибке необработанного исключения, указывающего на ("C2"). Эта ошибка на самом деле не объясняет, как с этим справиться.
 – 
user1695704
25 Сен 2013 в 08:27
Какой тип возвращает функция totalPrice ? Кабы вы редактируете вопрос всем методом?
 – 
Chris
25 Сен 2013 в 08:28