您的描述有些颠倒。
目前尚不清楚您是要使用TextBox 的文本设置ListBox.SelectedItem,还是要使用ListBox 的SelectedItem 的文本设置TextBox.Text。
代码说明一件事,描述说明另一件事。您遇到的错误可能是由 null SelectedItem 引起的(您没有选择任何内容)。
但是,如果您想使用ListBox.SelectedItem 文本设置TextBox.Text,您可以使用GetItemText() 方法。此方法有一个优点,如果 Listbox 没有选定项(SelectedItem 为 null (nothing)),它不会引发异常。
TextBox1.Text = ListBox1.GetItemText(ListBox1.SelectedItem)
相反:
您可以使用ListBox FindString() 和FindStringExact() 方法来定位控件集合中与给定字符串对应的项。
前者查找 ListBox 中以指定字符串开头的第一个项目,后者仅匹配整个字符串。
搜索可以从特定索引开始。它不区分大小写。
listBox1.SelectedIndex = listBox1.FindString(textBox1.Text, 0)
' or
listBox1.SelectedIndex = listBox1.FindStringExact(textBox1.Text, 0)
您可以指定先前找到的项目的索引作为起点继续搜索:
private int lboxSearchIndex = -1;
Private Sub ButtonSearch_Click(sender As Object, e As EventArgs) Handles ButtonSearch.Click
lboxSearchIndex = listBox1.FindString(textBox1.Text, lboxSearchIndex)
listBox1.SelectedIndex = lboxSearchIndex
End Sub
设置SelectedItem 就像使用FindStringExact() 方法。
只有完全匹配才会设置项目,但它区分大小写。