我有一个ListBox lstRoomType
,它有5种类型的房间,每个房间都有自己的价格。然后我有一个ComboBox(cboNumberOfNights
)与夜晚的数量(从1到31)
如何将lstRoomType
乘以cboNumberOfNights
以获得房价?
更新
我的列表框中的条目是一堆字符串:
"room a $25"
"room b $30"
"room c $40"
我还需要从所选字符串中提取数值。
答案 0 :(得分:0)
ListBox
和ComboBox
都是对象;通常,任意对象不能相互相乘。在.NET中,乘法是指数学运算,它实际上只适用于一对数字。 1
您实际需要的是根据组合框的当前所选项目,根据列表框的当前所选项目,将组合框中的某些值与组合框中的某些值相乘。 / p>
WinForms ListBox和WPF ListBox都有SelectedItem
属性,您可以将其用于此目的。假设您有某种类型描述房间类型和价格:
Public Class RoomType
Property Description As String
Property Price As Double
End Class
并且您已使用RoomType
的一些集合填充了您的列表框;假设你已经用一些数字集合填充你的组合框,你可以使用:
Dim price = CType(lstRoomType.SelectedItem, RoomType).Price * CInt(cmbNumberOfNights.SelectedItem)
如果列表框中的项目不是某些数据类型的实例,而是字符串,那么您必须解析SelectedItem
返回的字符串。类似的东西:
Dim roomRate = Double.Parse(CStr(lstRoomType.SelectedItem).Split(" ").Last().TrimStart("$"))
Dim price = roomRate * CInt(cmbNumberOfNights.SelectedItem)
通常,您的项目是具有属性而不是字符串的对象要好得多;必须从字符串中提取数字更容易出错。
1。 Python允许您将字符串乘以数字:s = 'abcd' * 5
和s
将包含重复5次的字符串。但这仅适用于值类型(以及String
等类型,其行为方式类似于值类型),其中具有相同值的多个实例是等效的;对于引用类型,乘法并没有多大意义 - lstRoomType * 5
只能返回一些带有5个引用同一列表框的集合,这是非常没用的。