กล่องข้อความเติมข้อความอัตโนมัติสำหรับ .net พร้อมรองรับตัวคั่น

ฉันกำลังพัฒนาแอปพลิเคชันที่ต้องใช้กล่องข้อความที่มีการเติมข้อความอัตโนมัติ/คำแนะนำ (ดรอปดาวน์) สำหรับหลายคำ (คั่นด้วยตัวคั่นเช่นช่องว่าง) เช่นกล่องข้อความแท็กที่นี่ใน StackOverflow

ตัวอย่างเช่น ฉันเริ่มพิมพ์ 'app' และควรแสดงคำทั้งหมดในรายการคำแนะนำที่ขึ้นต้นด้วย app และเมื่อฉันป้อนคำและกด Space และเริ่มพิมพ์คำใหม่ ก็ควรแสดงคำแนะนำทั้งหมด สำหรับคำบางส่วนนั้น

มีตัวอย่างที่ฉันสามารถดูได้หรือไม่?


person Dasith Wijes    schedule 06.04.2011    source แหล่งที่มา
comment
ยังคงมองหาอันนั้นอยู่ใช่ไหม? ฉันโพสต์ตัวอย่างของฉันแล้ว หากยังไม่ชัดเจนพอเพียงแสดงความคิดเห็นแล้วฉันจะอธิบาย...   -  person Ezi    schedule 08.05.2011


คำตอบ (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
person Ezi    schedule 08.05.2011
comment
เฮ้ ขอบคุณ ฉันแก้ไข codeproject.com/KB/cs/AutoCompleteTextBox.aspx เพื่อให้มี คำแนะนำทีละคำและอีกมากมาย จริงๆ แล้วมันเป็นการเขียนซ้ำ ฉันเลียนแบบพฤติกรรมของกล่องข้อความแท็กที่คุณได้รับจากไซต์นี้เมื่อคุณสร้างโพสต์ ฉันพยายามโพสต์โค้ดกลับไปที่ไซต์นั้น แต่พวกเขาไม่มีสิ่งอำนวยความสะดวกนั้น - person Dasith Wijes; 09.05.2011
comment
นี่คือโค้ดที่สมบูรณ์ codeproject.com/KB/cs/ ดูส่วนความคิดเห็นสำหรับรหัสที่อัปเดตของฉัน - person Dasith Wijes; 09.05.2011
comment
ขอบคุณสำหรับลิงค์นั้น ฉันก็กำลังทำโปรเจ็กต์แบบนั้นอยู่เหมือนกัน - person Ezi; 09.05.2011