Показать список в текстовое поле - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь добавить значения в список и отобразить их все в виде метки в формате списка. В настоящее время из того, что я могу сказать, мой код выбирает только последнее нажатое значение и не добавляет все значения, которые были нажаты в списке. Я попытался изменить для l oop в нижней части, но этот текущий код является лучшим, я мог заставить его работать, и это все еще далеко. Есть ли легкое исправление?

Public Class Form1

    Dim Cars As Integer = 0
    Dim Weight As Integer = 0
    Dim CarList As New List(Of String)

    Private Sub BtnBox_Click(sender As Object, e As EventArgs) Handles btnBox.Click
        'Adds 1 to total and 65000kgs to the weight
        Cars = Cars + 1
        lblTotalCars.Text = Cars

        Weight = Weight + 65000
        lblTotalWeight.Text = Weight

        CarList.Add("Box")
    End Sub

    Private Sub BtnContainer_Click(sender As Object, e As EventArgs) Handles btnContainer.Click
        'Adds 1 to total and 30000kgs to the weight
        Cars = Cars + 1
        lblTotalCars.Text = Cars

        Weight = Weight + 30000
        lblTotalWeight.Text = Weight

        CarList.Add("Container")

    End Sub

    Private Sub BtnHopper_Click(sender As Object, e As EventArgs) Handles btnHopper.Click
        'Adds 1 to total and 51300 to the weight
        Cars = Cars + 1
        lblTotalCars.Text = Cars

        Weight = Weight + 51300
        lblTotalWeight.Text = Weight

        CarList.Add("Hopper")
    End Sub

    Private Sub BtnRefridge_Click(sender As Object, e As EventArgs) Handles btnRefridge.Click
        'Adds 1 to total and 59400 to the weight
        Cars = Cars + 1
        lblTotalCars.Text = Cars

        Weight = Weight + 59400
        lblTotalWeight.Text = Weight

        CarList.Add("Refridgerator")
    End Sub

    Private Sub BtnTank_Click(sender As Object, e As EventArgs) Handles btnTank.Click
        'Adds 1 to total and 45200 to the weight
        Cars = Cars + 1
        lblTotalCars.Text = Cars

        Weight = Weight + 45200
        lblTotalWeight.Text = Weight

        CarList.Add("Tank")
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For i As Integer = 0 To CarList.Count - 1
            lbl.Text = CarList(i) + vbCrLf 'Tried this to create the list format but code only displaying last selected value
        Next i
    End Sub
End Class

1 Ответ

0 голосов
/ 18 марта 2020

Причина вашей проблемы в том, что в вашем l oop текст Label перезаписывается на каждой итерации. Простое добавление амперсанда (&) перед = добавляет новый текст к существующему тексту. Долгий путь написания этого будет

lbl.Text = lbl.Text & CarList(i) & vbCrLf

Как и &=, вы также можете использовать ярлык += для добавления. Я показал это в методе BtnTank.Click.

Включите Option Strict и оставьте его включенным для всех ваших проектов. Свойство .Text Control s является String. Cars и Weight являются Integers. Метод .ToString исправляет это.

Dim Cars As Integer = 0
Dim Weight As Integer = 0
Dim CarList As New List(Of String)

Private Sub BtnTank_Click(sender As Object, e As EventArgs) Handles btnTank.Click
    Cars += Cars
    lblTotalCars.Text = Cars.ToString
    Weight += 45200
    lblTotalWeight.Text = Weight.ToString

    CarList.Add("Tank")
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For i As Integer = 0 To CarList.Count - 1
        lbl.Text &= CarList(i) & vbCrLf
    Next i
End Sub

Код, предоставленный @Jimi, также будет работать, избавляя вас от необходимости писать l oop. Я сохраняю код в вашем формате, чтобы показать, где он идет не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...