我正在寻找一种在多列列表框中设置不同列宽的方法。第一个应为0,以便将其隐藏,第二个应为15,第三个为85,依此类推
我的目标是创建一个引用产品的列表框,用户可以从中单击以选择此类产品,然后使用按钮对该产品执行不同的操作
列表框从MySQL数据库获取数据
答案 0 :(得分:0)
您可以创建一个类来存储数据。您可以根据需要添加任意多个属性,以匹配数据库表中的字段。我添加了一个自定义构造函数,以简化创建新产品时的设置属性。我已覆盖.ToString,因为列表框在要添加的对象上调用.ToString。
Public Class Product
Public Property ProductName As String
Public Property Price As Decimal
Public Sub New(Name As String, ProductPrice As Decimal)
ProductName = Name
Price = ProductPrice
End Sub
Public Overrides Function ToString() As String
Return ProductName
End Function
End Class
创建一个可变的表单级别列表,以保存您的产品数据列表。 检索数据并将每个记录存储在列表中。
Private lstProduct As New List(Of Product)
Private Sub GetData()
Using cn As New MySqlConnection("Your connection string")
Using cmd As New MySqlCommand("Select * From Products;", cn)
cn.Open()
Using dr As MySqlDataReader = cmd.ExecuteReader
While dr.Read
Dim p As New Product(dr.GetString(0), dr.GetDecimal(1))
lstProduct.Add(p)
End While
End Using
End Using
End Using
End Sub
获取数据后,您可以将列表用作ListBox的.DataSource。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetData()
ListBox2.DataSource = lstProduct
End Sub
现在,您具有列表框中所有可用的产品属性。</ p>
Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged
Dim p As Product = DirectCast(ListBox2.SelectedItem, Product)
Dim ProductPrice As Decimal = p.Price
Debug.Print(ProductPrice.ToString)
End Sub