Вот концептуальный пример, где я использую Console.WriteLine в виде окна проекта, в котором вывод отображается в окне вывода Visual Studio. Взято с following article Я написал некоторое время назад и адаптировался, чтобы помочь здесь.
Один CheckedListBox, одна кнопка
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable
dt.Columns.Add(New DataColumn With {.ColumnName = "Identifier",
.DataType = GetType(Int32),
.AutoIncrement = True,
.AutoIncrementStep = 100,
.AutoIncrementSeed = 100})
dt.Columns.Add(New DataColumn With {.ColumnName = "ItemName",
.DataType = GetType(String)})
dt.Columns.Add(New DataColumn With {.ColumnName = "Cost",
.DataType = GetType(Decimal)})
dt.Columns.Add(New DataColumn With {.ColumnName = "ExtraData",
.DataType = GetType(String)})
dt.Rows.Add(New Object() {Nothing, "One", 10.99D, "Extra 1"})
dt.Rows.Add(New Object() {Nothing, "Two", 7D, "Extra 2"})
dt.Rows.Add(New Object() {Nothing, "Three", 5.99D, "Extra 3"})
dt.Rows.Add(New Object() {Nothing, "Four", 1.34D, "Extra 4"})
dt.Rows.Add(New Object() {Nothing, "Five", 45.65D, "Extra 5"})
clbCheckedListBox.DataSource = dt
clbCheckedListBox.DisplayMember = "ItemName"
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If clbCheckedListBox.CheckedItems.Count > 0 Then
For Each drv As DataRowView In clbCheckedListBox.CheckedItems
Console.WriteLine("{0} - {1}", drv.Row.Field(Of String)("ItemName"), drv.Row.Field(Of Decimal)("Cost"))
Next
Dim total As Decimal = clbCheckedListBox.CheckedItems.Cast(Of DataRowView).Select(Function(view) view.Row.Field(Of Decimal)("Cost")).Sum
Console.WriteLine(total)
End If
End Sub
End Class
CheckedListBox не класс коллекции, это просто достаточно хорошо, чтобы показать содержимое коллекции. Отделите данные от представления, объявите переменную List (Of Something). Где что-то является классом, который по крайней мере имеет свойства Selected As Boolean и Price As Decimal и переопределение ToString(). Теперь это просто. –