微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法从文本框检索集合项 - vb.net 中的 AutoCompleteCustomSource

如何解决有没有办法从文本框检索集合项 - vb.net 中的 AutoCompleteCustomSource

在执行以下代码时,我能够成功地将数组值插入到 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。