2012-05-19 157 views
1

我有組合框中的自動完成功能,它工作正常,但沒有什麼問題,我提出的建議列表出現文字長度超過3個字符,但列表出現後的長度4個字符(當用戶輸入文本的第五個字符),這意味着當在第一時間列表不會出現在這裏執行的代碼是Text_Changed事件代碼自動完成在組合框窗體

Private Sub TxtItem_TextChanged(sender As System.Object, e As System.EventArgs) Handles TxtItem.TextChanged 


    If Trim(TxtItem.Text) <> "" And Trim(TxtItem.Text).Length > 3 Then 
     'Autocomplete 
     Dim Bl As New ItemBL 
     Dim suggestions = Bl.DisplayLikeNameList(Trim(TxtItem.Text)) 
     Dim MySource As New AutoCompleteStringCollection() 
     MySource.AddRange(suggestions.ToArray) 

     With TxtItem 
      .AutoCompleteMode = AutoCompleteMode.Suggest 
      .AutoCompleteSource = AutoCompleteSource.CustomSource 
      .AutoCompleteCustomSource = MySource 
     End With 
     TxtItem.Select(TxtItem.Text.Length, 0) 
     Exit Sub 
    Else 
     TxtItem.AutoCompleteMode = AutoCompleteMode.None 
    End If 

End Sub 

注意:此問題會導致應用程序退出(有時)在Windows XP上,但不影響Windows 7

+0

它導致應用程序退出? * –

+0

有時當用戶輸入文本時更多3個字符應用程序退出,不顯示異常消息或其他內容,只是退出 –

+1

不要在事件處理程序中更改AutoCompleteMode,它具有許多副作用。如果您不想顯示任何內容,請確保源代碼爲空。 –

回答