我想實現在一個陣列,顯示在單字符輸入建議的形式的自定義數據源的文本框自動完成。但是當我運行程序時,自動完成只在第二個字符輸入後啓動。當我調試時,我看到數據在AutoCompleteNameCollection中,但直到第二個字符輸入時才顯示在建議中。文本框自動完成不能正常工作
這段代碼我已經寫在textchange事件。
arr = LoadName(empid_txt.Text.Trim()); //arr is string array
namesCollection.AddRange(arr);
this.empid_txt.AutoCompleteMode = AutoCompleteMode.Suggest;
this.empid_txt.AutoCompleteSource = AutoCompleteSource.CustomSource;
this.empid_txt.AutoCompleteCustomSource = namesCollection;
在LoadEvent中,我用一個空數組初始化了AutoCompleteNameCollection。
namesCollection.AddRange(arr);// here arr is empty
empid_txt.AutoCompleteMode = AutoCompleteMode.Suggest;
empid_txt.AutoCompleteSource = AutoCompleteSource.CustomSource;
empid_txt.AutoCompleteCustomSource = namesCollection;
但它不工作,直到第二個字符輸入。 但是,如果不是數組,我用一個空字符串初始化AutoCompleteNameCollection,如:namesCollection.Add(「」);它對單個字符輸入起作用,但有時會出現AccessViolationException:試圖讀取或寫入受保護的內存。 那麼有什麼辦法可以解決這個問題嗎?
你問我的用戶開始輸入之前,加載的所有數據。如果這樣我不能這樣做,因爲我可以在textchange事件中篩選大量數據。 – Nav 2012-02-28 19:38:51
直到它有匹配的東西,文本框不能自動完成。由於在用戶鍵入內容之前不會填充源代碼,因此它不會在第一個字符上自動填充。您可以嘗試對上游事件(ieKeyDown事件) – 2012-02-28 21:03:41
進行過濾,但當我最初使用空字符串而不是字符串數組填充源時,它確實起作用,然後在文本更改中用字符串數組替換/附加它。但是,有時它會導致訪問衝突異常。你知道任何工作嗎? – Nav 2012-02-29 06:40:40