【问题标题】:autocomplete text box for .net with support for delimiter.net 的自动完成文本框,支持分隔符
【发布时间】:2013-03-26 02:00:24
【问题描述】:

我正在开发一个应用程序,它需要一个带有自动完成/建议(下拉)的文本框,用于多个单词(由空格分隔),就像 StackOverflow 中的标签文本框一样。

例如,我开始输入“app”,它应该显示建议列表中以 app 开头的所有单词,当我输入一个单词并按空格并开始输入一个新单词时,它应该显示该部分单词的所有建议。

有没有例子可以看一下?

【问题讨论】:

  • 还在找那个吗?我发布了我的示例,如果不够清楚,请发表评论,我会解释...

标签: vb.net text autocomplete


【解决方案1】:

我希望这会有所帮助.. 我正在使用开发人员快速工具,但同样可以用于常规 .net 组件。

Private Sub txtToEmail_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtToEmail.EditValueChanged
    Try
        Dim Emails As New List(Of String)
        Emails.Add("123@abc.com")
        Emails.Add("456@dfg.com")
        Emails.Add("abc@123.com")
        Emails.Add("dfg@456.com")

        Dim Txt = Trim(CStr(txtToEmail.EditValue))

        Dim Suggestions As IEnumerable(Of String)

        If Txt <> "" Then
            If Txt.IndexOf(",") = -1 Then
                Suggestions = From c In Emails Where c.StartsWith(Txt) Select c
            Else
                Dim lastIndex = Txt.LastIndexOf(",")
                Dim lastWord = Trim(Txt.Substring(lastIndex + 1))
                Suggestions = From c In Emails Where c.StartsWith(lastWord) Select c
            End If

            EmailList.Items.Clear()

            For Each r In Suggestions
                EmailList.Items.Add(r)
            Next

        End If

        If EmailList.ItemCount > 0 Then
            EmailList.Visible = True
        End If

    Catch ex As Exception
        ShowErrorBox(ex)
    End Try

End Sub

Private Sub EmailList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmailList.Click
    Try
        If EmailList.SelectedValue = Nothing OrElse EmailList.SelectedValue = "" Then Return

        Dim Txt = CStr(txtToEmail.EditValue)

        If Txt.IndexOf(",") = -1 Then
            txtToEmail.EditValue = EmailList.SelectedValue
        Else
            Dim lastIndex = Txt.LastIndexOf(",")
            txtToEmail.EditValue = Txt.Substring(0, lastIndex + 1) & EmailList.SelectedValue
        End If

        txtToEmail.Focus()
        txtToEmail.SelectionStart = CStr(txtToEmail.EditValue).Length

        EmailList.Visible = False
    Catch ex As Exception
        ShowErrorBox(ex)
    End Try

End Sub

【讨论】:

  • 嘿,谢谢。我修改了这个codeproject.com/KB/cs/AutoCompleteTextBox.aspx 以获得逐字逐句的建议和更多内容。这实际上是一个重写。当您创建帖子时,我模仿了您在此站点中获得的“标签”文本框的行为。我试图将代码发布回那个站点,但他们没有那个设施。
  • 这是完整的代码codeproject.com/KB/cs/… 我更新的代码见 cmets 部分。
  • 感谢您提供的链接,我也在从事类似的项目。
猜你喜欢
  • 2011-01-18
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 2010-09-22
相关资源
最近更新 更多