【发布时间】:2012-03-18 05:15:15
【问题描述】:
我正在尝试使用数组形式的自定义数据源实现文本框自动完成功能,该数组显示有关单字符输入的建议。但是当我运行程序时,自动完成仅在第二个字符输入后开始。当我调试时,我看到 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: Attempted to read or write protected memory。 那么有什么办法可以解决这个问题吗?
【问题讨论】:
-
我在使用文本框时遇到了同样的问题,对我来说,我使用的是多行文本框,这导致了这个问题。将多行更改为 false 解决了这个问题。
标签: c# autocomplete textbox