2015-12-22 98 views
-1

基本上我有一个检查列表框,其中的每个项目都有相应的价格。我如何编写它,以便如何在CheckedListBox中添加项目vb.net

1)当选择的项目之一,涉及价格某处存储在代码和

2)我怎么那么加起来的价格(例如,如果几个项目已经被选中,我想合计价格并在文本框中显示总数)。

我上“的Visual Studio Express的台式机”这样做所以基本上vb.net

Click here to see the picture of the CheckedListBox

+1

CheckedListBox不是一个集合类,它只是不够好,以显示集合的内容。从视图中分离数据,声明一个List(Of Something)变量。 Where Something是一个至少具有Selected As Boolean和Price As Decimal属性以及ToString()重写的类。现在很简单。 –

回答

0

这里是一个概念上的例子,我在一个窗口形式的项目中使用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 
相关问题