【问题标题】:How to add up items in a CheckedListBox vb.net如何在 CheckedListBox vb.net 中添加项目
【发布时间】:2015-12-22 12:16:06
【问题描述】:

基本上我有一个选中的列表框,其中的每个项目都有相应的价格。我如何对其进行编码以便

1) 当其中一项被选中时,相关价格存储在代码中的某处,并且

2) 然后我如何将这些价格相加(例如,如果已检查多个项目,我想将价格相加并在文本框中显示总计)。

我在“Visual Studio Express for desktop”上做这个,所以基本上是 vb.net

【问题讨论】:

  • CheckedListBox 不是一个集合类,它仅仅足以显示一个集合的内容。将数据与视图分离,声明一个 List(Of Something) 变量。 Where Something 是至少具有 Selected As Boolean 和 Price As Decimal 属性和 ToString() 覆盖的类。现在很简单。

标签: vb.net visual-studio checkedlistbox checkeditems


【解决方案1】:

这是一个概念示例,我在 Window 窗体项目中使用 Console.WriteLine,其中输出显示在 Visual Studio 的输出窗口中。取自following article,我写了一段时间,并在这里提供帮助。

一个CheckedListBox,一个Button

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

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多