2011-04-06 58 views
4

我正在开发一个应用程序,它需要一个带有自动完成/建议(下拉菜单)的多个单词(用空格分隔符分隔)的文本框,如此处的标签文本框在StackOverflow中。例如,我开始输入'app',它应该显示建议列表中的所有单词,从应用开始,当我输入单词并按空格并开始输入新单词时,它应该显示所有建议那部分词。支持分隔符的.net自动填充文本框

有没有我可以看看的例子?

+0

仍在寻找那个?我张贴我的样本,如果它不够清楚只是评论,我会解释... – Ezi 2011-05-08 19:38:37

回答

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("[email protected]") 
     Emails.Add("[email protected]") 
     Emails.Add("[email protected]") 
     Emails.Add("[email protected]") 

     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 
+0

嘿谢谢。我修改了这个http://www.codeproject.com/KB/cs/AutoCompleteTextBox.aspx以逐字逐句的建议和更多的东西。这实际上是一个重写。我模仿了您在创建帖子时在本网站中获得的“标签”文本框的行为。 我试图将代码发回该网站,但他们没有那个设施。 – 2011-05-09 04:13:08

+0

这是完整的代码http://www.codeproject.com/KB/cs/AutoCompleteTextBox.aspx?msg=3884491#xx3884491xx 请参阅评论部分以获取我的更新代码。 – 2011-05-09 04:23:52

+0

感谢您的链接,我也在做这样的项目。 – Ezi 2011-05-09 13:52:40