【问题标题】:VB.net Count specific text items in a listbox?VB.net 计算列表框中的特定文本项?
【发布时间】:2014-01-26 22:00:35
【问题描述】:

尽管知道这段代码非常简单,但过去一周一直在绕圈子,但我遇到了很多问题。

我正在为大学作业创建一个简单的餐厅菜单,用户可以在其中选择他们想要的项目,然后计算最终价格并将其显示在标签中。

我已经把它设置得很简单,每个食物项目都在表格上的标签中,旁边的按钮显示“添加”。单击它后,将其添加到列表框中。用户可以选择添加每个项目的倍数,也可以删除这些项目,所有这些我都顺利地整理出来了。

我想要发生的是,当我单击“计算”按钮时,我想搜索每个项目的列表框,计算其中有多少,并为每个项目添加相关值。例如,如果我在列表框中添加 3 个大蒜面包,我希望计算按钮在列表框中搜索大蒜面包,并且每次出现时添加 1.20。每个项目我都需要这个。

如果有人能提供帮助,那真的会有所帮助:D

如果有帮助,我正在使用一种名为“Form1”的表单,我的列表框名为“Listbox1”,我还有 20 种食物。

前几天我确实问过这个问题,虽然当我要求解释如何将其转化为我的项目时,这些信息很有用,但根本没有任何意义。我知道这可能很困难,但请理解我是 VB 的新手,所以如果你能像我 5 岁那样解释一切,我将不胜感激:D

干杯

【问题讨论】:

  • 您需要在您的问题中添加用于填充 ListBox 的代码
  • 单击“添加”按钮时,代码为 ListBox1.Items.Add(Label1.Text) 。只是对每个对象重复此操作,因为它似乎是最容易布局和保持井井有条的。干杯

标签: vb.net count listbox


【解决方案1】:

为此创建一个字典可能是最简单的,其中项目名称作为键,价格作为值。将此字典设为全局变量并在 Form.Load 事件中填充它:

Dim MenuItems As Dictionary(Of String, Decimal)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    MenuItems = New Dictionary(Of String, Decimal)
    MenuItems.Add("Garlic Bread", 12.23)
    MenuItems.Add("Roast Beef", 2.23)
    (...)
End Sub

在您的计算方法中,您将遍历您的列表并在字典中查找价格:

Dim TotalPrice As Decimal = 0
For Each item As Object In Listbox1.Items
    If MenuItems.ContainsKey(item.ToString) Then TotalPrice += MenuItems(item.ToString)
Next
Return TotalPrice

如果您这样做,您甚至可以从字典中动态创建菜单(将字典中每个项目的标签和按钮添加到表单加载时的表单中)。

【讨论】:

  • 嗨 Jens,完美的代码,非常感谢你,如果我能吻你,我会:D
  • 嗨 Jens,“对于 Listbox1 中的每个项目作为对象”行有一个小错误,我遇到了表达式类型错误,有什么想法吗?
  • 是的。抱歉,我忘记了.Items。查看我编辑的帖子。
  • 干杯,最后一个问题很抱歉打扰你,我已经用 label48.text = totalprice 替换了“return totalprice”行,因为它不起作用,但是无论列表框中有什么项目一直返回 0,有什么想法吗?
  • 您好,对不起,我的错,在我的列表中有一个额外的价值,感谢您的帮助,它完美运行:D
猜你喜欢
  • 2016-12-21
  • 2011-10-27
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多