问题描述
在执行以下代码时,我能够成功地将数组值插入到 TextBox AutoCompleteCustomSource 中。
但我也需要能够从 AutoCompleteCustomSource 读取所有数据,并将其放入一个数组中。
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
Dim Arr1 As String() = {"Hello","How","Are","You"}
'Below line of code puts all the array values into TxtBox.AutoCompleteCustomSource
TextBox1.AutoCompleteCustomSource.AddRange(Arr1)
'-------------Need Help on Below-------
'How to read all data from TextBox1.AutoCompleteCustomSource and bring it into an array
Dim MyArr1
MyArr1 = TextBox1.AutoCompleteCustomSource??????????????????????????????????????
End Sub
解决方法
你可以使用一些 LINQ:
Dim items = TextBox1.AutoCompleteCustomSource.Cast(Of String)().ToArray()
AutoCompleteCustomSource
是类型 AutoCompleteStringCollection
,它实现了 IEnumerable
而不是 IEnumerable(Of T)
,尽管每个项目都保证是一个 String
。这意味着您可以调用 Cast(Of String)
扩展方法来获取 IEnumerable(Of String)
,然后对其调用 ToArray
以获取 String
数组。
其他选项包括:
Dim source = TextBox1.AutoCompleteCustomSource
Dim items(source.Count - 1) As String
source.CopyTo(items,0)
或者你可以用这个去真正的老派:
Dim source = TextBox1.AutoCompleteCustomSource
Dim upperBound = source.Count - 1
Dim items(upperBound) As String
For i = 0 To upperBound
items(i) = source(i)
Next