我想为我们的应用程序实现 Google的搜索栏行为:用户必须能够输入用户名作为自由文本,并且根据输入的数据系统必须在弹出窗口上提供一些建议bar基于已存在的用户名。
这是简短的算法:
我无法使用devexpress
的lookupeditds - 它们只允许保留数据源中显示的值 - 即使通过添加到数据源在ProcessNewValue
内处理了新值,
更新事件会再次触发,刷新我的数据源会覆盖新的唯一值。 现在我期待Combobox控制。但看起来没有能力输入自由文本以及显示建议弹出窗口。
答案 0 :(得分:1)
我不能使用devexpress的查找编辑 - 它们只允许保留数据源中显示的值 - 即使通过添加到数据源在ProcessNewValue中处理了新值,
我相信你错了,因为你可以轻松使用DevExpress LookUpEdit:
class AutoCompleteLookUpEdit : LookUpEdit {
List<string> suggestions = new List<string>();
public AutoCompleteLookUpEdit() {
Properties.DataSource = suggestions;
Properties.ImmediatePopup = true;
}
protected override void ProcessFindItem(KeyPressHelper helper, char pressedKey) {
suggestions.Clear();
// add search suggestions here depending on helper.Text value
suggestions.Add("google");
suggestions.Add("devexpress");
// ...
base.ProcessFindItem(helper, pressedKey);
}
}
详细示例请查看How to create an editor with a dynamic autocomplete list。
P.S。您可以使用AcceptEditorTextAsNewValue属性来控制查找是否接受输入的文本作为有效值,即使它不属于基础数据源。