Чеклистбокс в ЛистВью на VB

Вопрос или проблема

Я работаю над проектом на Visual Basic и мне нужна помощь с моим кодом.

Моя проблема в том, что у меня есть ListView с четырьмя колонками, и я хочу отобразить отмеченные элементы из ChecklistBox (названного “Extra”) в четвертой колонке ListView. [изображение] Это форма.

Вот мой код.

Public Class Form1
    Dim CurrentItem As Integer = 0
    Private Sub btnAddBurger_Click(sender As Object, e As EventArgs) Handles btnAddBurger.Click
        If optChicken.Checked Then
            lstOrderView.Items.Add("Курица")
        Else
            lstOrderView.Items.Add("Говяжий фарш")
        End If

        If optFries.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Картофель фри")
        ElseIf optOnionRing.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Кольца лука")
        End If

        If optWater.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Вода")
        ElseIf optCoke.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Кока-Кола")
        ElseIf optLemonade.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Лимонад")
        End If
    End Sub


[изображение
] Это результат.

Что я ожидаю, так это то, что когда я отмечу элементы в ChecklistBox, эти элементы должны появиться в колонке “Extra” в ListView. Как я могу написать код, чтобы добиться этого? Есть ли какие-то специфические методы или события, которые я должен использовать?

Может быть, на самом деле лучше ответить автору вопроса, и тогда в будущем будет легче?

lstOrderView.Items(CurrentItem).SubItems.Add(
    String.Join(", ", From i In optExtras.CheckedItems))

Ответ или решение

Давайте разберемся, как вы можете перенести отмеченные элементы из вашего CheckListBox с именем "Extra" в четвёртую колонку вашего ListView в проекте на Visual Basic. Для начала, важно понимать, как работает ListView и какие методы вы можете использовать для получения нужного результата.

Шаг 1: Создание структуры вашего ListView

Убедитесь, что ваш ListView настроен с четырьмя колонками. Для этого можно использовать дизайнер форм в Visual Studio:

  1. Откройте свой проект в Visual Studio.
  2. Выберите ваш ListView и в панели свойств найдите параметр Columns.
  3. Добавьте необходимые колонки, например:
    • Первая колонка: "Бургер"
    • Вторая колонка: "Гарнир"
    • Третья колонка: "Напиток"
    • Четвёртая колонка: "Дополнения"

Шаг 2: Код для добавления заказов

Вы уже имеете часть кода, который добавляет элементы в ListView. Вот улучшенный вариант с учетом добавления отмеченных элементов из CheckListBox.

Public Class Form1
    Dim CurrentItem As Integer = 0

    Private Sub btnAddBurger_Click(sender As Object, e As EventArgs) Handles btnAddBurger.Click
        ' Добавление основного блюда в ListView
        If optChicken.Checked Then
            lstOrderView.Items.Add("Chicken")
        Else
            lstOrderView.Items.Add("Ground Beef")
        End If

        ' Заполнение подкатегорий (Sides)
        If optFries.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Fries")
        ElseIf optOnionRing.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Onion Ring")
        End If

        ' Заполнение напитков (Drinks)
        If optWater.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Water")
        ElseIf optCoke.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Coke")
        ElseIf optLemonade.Checked Then
            lstOrderView.Items(CurrentItem).SubItems.Add("Lemonade")
        End If

        ' Заполнение дополнений (Extras) из CheckListBox 
        Dim extras As New List(Of String)()
        For Each item In Extra.CheckedItems
            extras.Add(item.ToString())
        Next

        If extras.Count > 0 Then
            lstOrderView.Items(CurrentItem).SubItems.Add(String.Join(", ", extras))
        Else
            lstOrderView.Items(CurrentItem).SubItems.Add("") ' Если нет дополнений
        End If

        ' Увеличение текущего элемента для следующего заказа
        CurrentItem += 1
    End Sub
End Class

Объяснение кода:

  • Обработка CheckListBox: Код проходит через все отмеченные элементы в Extra.CheckedItems и добавляет их в список extras.
  • Добавление в ListView: С помощью String.Join(", ", extras) вы объединяете все отмеченные элементы в строку с разделением запятой. Если нет дополнительных элементов, в колонке "Дополнения" будет пустое значение.
  • Увеличение CurrentItem: После добавления всех данных для текущего заказа CurrentItem увеличивается, чтобы при следующем заказе данные добавлялись в новую строку.

Заключение

Теперь, когда вы добавите новый элемент через кнопку btnAddBurger, в ListView добавятся все выбранные элемент из CheckListBox в четвёртую колонку. Если у вас возникнут дополнительные вопросы или потребуется дополнительная помощь, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...