文本框中的Vb.net + AutoComplete

时间:2010-11-11 07:18:18

标签: vb.net autocomplete textbox

所以我在VB.NET中阅读了一些关于文本框自动完成的内容,但我真的不明白它们存储在哪里?它是一个完全内置的功能,还是我必须编写一些代码才能工作?我找到了文本框的AutoCompleteModeAutoCompleteSource属性。但我想将我在文本框中写的任何内容附加到自动完成源。我是否将源连接到My.Settings或其他什么?我不也必须使用数组吗?任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:5)

您必须手动向自动完成数据源添加新条目...当您考虑它时,这是有道理的:Windows窗体应该知道什么时候应该将新条目添加到建议列表中当输入的文字只是暂时的东西?

您可以添加新值,例如当输入字段的验证发生时,或者当用户按下确定/应用按钮时,或者最适合您需要的任何内容时。但你必须自己做。

您已经发现的属性是正确的。

Dim suggestions As New List(Of String)
suggestions.Add("Abba")
suggestions.Add("Nirvana")
suggestions.Add("Rolling Stones")
...
textBox.AutoCompleteSource = suggestions

你可以将AutoCompleteSource绑定到几乎任何东西;这与数据绑定非常相似。要记住的一件事是,如果您要向自动完成数据源添加新条目,那么如果您的数据源未实现INotifyCollectionChanged接口,则UI控件可能不会立即注意到。

答案 1 :(得分:1)

首先创建要用作自定义源的列表。

Dim MySource As New AutoCompleteStringCollection()

然后设置文本框的属性

With MyTextbox
   .AutoCompleteCustomSource = MySource
   .AutoCompleteMode = AutoCompleteMode.SuggestAppend
   .AutoCompleteSource = AutoCompleteSource.CustomSource
End With

将此代码放在eventlistener中,用于验证输入字段,例如btnOK.Click

Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
    MySource.Add(txtinput.text)
End Sub