Как записать значение переменной в текстовое поле из класса в VB?

#vb.net #forms #class #oop #textbox

Вопрос:

Поэтому я создал класс под названием «порядок», из которого, когда я создаю экземпляр объекта в основной форме, значение текстового поля передается в качестве параметра. И это текстовое поле, в которое я пытаюсь написать- «txttotal.text».

   Dim order1 As New order
    order1.AddItem(menuItem)
    order1.OrderTotal(txttotal.Text)
 

А затем я использую этот параметр в методе класса, чтобы записать значение «fullamount» в текстовое поле. Но когда я запускаю его и после вычисления полного числа, в текстовом поле ничего не появляется. Я не уверен, что делаю что-то не так. Должен ли я использовать функцию?

 Public Sub OrderTotal(total)

Dim fullamount As Decimal = 0

For Each item As MenuItem In Items

    fullamount  = CDec(item.Cost)
    total = fullamount

Next

End Sub
 

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

1. txttotal.Text это а String , а не а TextBox . Ваш Order объект ничего не знает о TextBox том, что String произошло, и не должен знать. Вы передаете существующее String , так что это ввод, а не вывод. Если этот объект выполняет вычисление, то он должен передать результат этого вычисления обратно, и форма должна обновить TextBox . Да, вы должны использовать функцию.

2. Вы используете неправильные типы данных, Cost Decimal в классе должно быть a Order . Вы должны преобразовать txttotal.Text свойство в Decimal использование Decimal.TryParse(...) метода. Обратите внимание на типы данных.

3. Включите параметр Строгий в Свойствах и инструментах проекта->Параметры->>Проекты и решения->>>VB по умолчанию. Исправьте ошибки, на которые это укажет.

4. У вас есть собственный MenuItem класс? Окна. Формы MenuItem не имеют Cost свойства. Что такое Items ? Я думаю, нам нужно увидеть твой класс order . Почему ты переходишь total на субмарину? Сделайте это функцией GetOrderTotal и верните общее количество.

Ответ №1:

Может быть, тебе стоит сделать это вот так. Сначала получите total значение в виде текста из txttotal.text txttotal.text , а затем заполните его новым вычисленным значением.

 Dim order1 As New order
order1.AddItem(menuItem)

dim total = txttotal.Text
txttotal.Text = order1.OrderTotal(total)
 

Преобразуйте ваш Sub в a Function , который возвращает значение, которое будет заполнять txttotal.Text .

 Public Function OrderTotal(Byval total)

   Dim fullamount As Decimal = 0

   For Each item As MenuItem In Items
      fullamount  = CDec(item.Cost)
      total = fullamount
   Next

   Return total

End Sub