我有一个填充了数据源的列表框,数据源是一个带有数字主键的访问数据库。主键设置为列表框的值成员。我想点击一个按钮,随机选择列表框中的一个项目。
我一直在努力:
Public Class Form1
Dim rnd As New Random
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Fills listbox, adds Valuemember and Displaymember
Me.Recipe_tableTableAdapter.Fill(Me.Recipes2DataSet.recipe_table)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim randomIndex1 As Integer = rnd.Next(1, ListBox1.Items.Count)
ListBox1.SelectedValue = randomIndex1
End Sub
这种工作,但我得到一个唯一的值异常,因为它看起来像是选择尝试添加到数据库。我只想随意选择一个项目。
提前感谢您的帮助。
答案 0 :(得分:2)
在这种情况下,更好的方法是更改列表框的索引而不是值本身。通过更改SelectedIndex
而不是SelectedValue
,列表框的实际值没有任何变化。试试这个:
ListBox1.SelectedIndex = rnd.Next(0, ListBox1.Items.Count)
请记住索引是从零开始的,这就是为什么Random.Next
方法中指定的下限为零的原因。