Как я могу сложить четыре числа из текстовых полей вместе и отобразить ответ в отдельном текстовом поле в Visual Studio?

Визуальные основы В моем коде я заставляю пользователя вводить длину и высоту каждой из четырех стен. Я получил код для умножения длины на высоту, чтобы обработать площадь каждой стены и отобразить каждую из четырех областей в отдельных текстовых полях. Теперь я хочу сложить четыре числа в текстовых полях и отобразить ответ в отдельном текстовом поле, когда я нажимаю кнопку.

Это код, который у меня есть на данный момент;

    Dim txtLength1 As Integer
    Dim txtLength2 As Integer
    Dim txtLength3 As Integer
    Dim txtLength4 As Integer
    Dim txtHeight1 As Integer
    Dim txtHeight2 As Integer
    Dim txtHeight3 As Integer
    Dim txtHeight4 As Integer
    Dim Area As Integer

    Area = TotalArea.Text

    txtLength1 = Length1.Text
    txtHeight1 = Height1.Text
    txtLength2 = Length2.Text
    txtHeight2 = Height2.Text
    txtLength3 = Length3.Text
    txtHeight3 = Height3.Text
    txtLength4 = Length4.Text
    txtHeight4 = Height4.Text


    Area1.Text = txtLength1 * txtHeight1
    Area2.Text = txtLength2 * txtHeight2
    Area3.Text = txtLength3 * txtHeight3
    Area4.Text = txtLength4 * txtHeight4

    Area = Area1.Text + Area1.Text + Area3.Text + Area4.Text

End Sub

Конечный класс

Когда я запускаю этот код, я получаю сообщение об ошибке: "Преобразование из строки" в тип "Integer" недопустимо ".

2 ответа

Решение

Без учета тенденции людей писать другие вещи, кроме целых чисел, это бы сработало:

Dim txtLength1 As Integer
Dim txtLength2 As Integer
Dim txtLength3 As Integer
Dim txtLength4 As Integer
Dim txtHeight1 As Integer
Dim txtHeight2 As Integer
Dim txtHeight3 As Integer
Dim txtHeight4 As Integer
Dim Area As Integer

Area = Convert.ToInt32(TotalArea.Text)

txtLength1 = Convert.ToInt32(Length1.Text)
txtHeight1 = Convert.ToInt32(Height1.Text)
txtLength2 = Convert.ToInt32(Length2.Text)
txtHeight2 = Convert.ToInt32(Height2.Text)
txtLength3 = Convert.ToInt32(Length3.Text)
txtHeight3 = Convert.ToInt32(Height3.Text)
txtLength4 = Convert.ToInt32(Length4.Text)
txtHeight4 = Convert.ToInt32(Height4.Text)

Dim Area1Total As Integer = txtLength1 * txtHeight1
Dim Area2Total As Integer = txtLength2 * txtHeight2
Dim Area3Total As Integer = txtLength3 * txtHeight3
Dim Area4Total As Integer = txtLength4 * txtHeight4

Area1.Text = Area1Total
Area2.Text = Area2Total
Area3.Text = Area3Total
Area4.Text = Area4Total

Area = Area1Ttotal + Area2Total + Area3Total + Area4Total

Редактировать: Сделаны некоторые незначительные корректировки, чтобы вы могли иметь последнюю часть области, как и должно (так как.Text снова превратит ее в строку).

Изменить 2:

Если элемент управления "TotalArea" является не полем, которое должен заполнять пользователь, а суммой общей площади, рассчитанной по разным длинам и высотам, ваш код должен выглядеть следующим образом:

Dim txtLength1 As Integer
Dim txtLength2 As Integer
Dim txtLength3 As Integer
Dim txtLength4 As Integer
Dim txtHeight1 As Integer
Dim txtHeight2 As Integer
Dim txtHeight3 As Integer
Dim txtHeight4 As Integer
Dim Area As Integer

txtLength1 = Convert.ToInt32(Length1.Text)
txtHeight1 = Convert.ToInt32(Height1.Text)
txtLength2 = Convert.ToInt32(Length2.Text)
txtHeight2 = Convert.ToInt32(Height2.Text)
txtLength3 = Convert.ToInt32(Length3.Text)
txtHeight3 = Convert.ToInt32(Height3.Text)
txtLength4 = Convert.ToInt32(Length4.Text)
txtHeight4 = Convert.ToInt32(Height4.Text)

Dim Area1Total As Integer = txtLength1 * txtHeight1
Dim Area2Total As Integer = txtLength2 * txtHeight2
Dim Area3Total As Integer = txtLength3 * txtHeight3
Dim Area4Total As Integer = txtLength4 * txtHeight4

Area1.Text = Area1Total
Area2.Text = Area2Total
Area3.Text = Area3Total
Area4.Text = Area4Total

Area = Area1Ttotal + Area2Total + Area3Total + Area4Total
TotalArea.Text = Area

Так как TextBox control хранит его содержимое в виде строк / текстов, вам нужно будет проанализировать эти текстовые значения в числовое значение, чтобы вы могли затем использовать их для расчетов.

Смотрите следующий пример:

txtLength1 = int.Parse(Length1.Text)

редактировать: вы также можете рассмотреть возможность использования int.TryParse метод вместо int.Parse определить, когда пользователь ввел нечисловой текст.

Другие вопросы по тегам