WinForms:为文本编辑器提供动态建议弹出窗口

时间:2016-08-03 15:09:33

标签: c# devexpress

我想为我们的应用程序实现 Google的搜索栏行为:用户必须能够输入用户名作为自由文本,并且根据输入的数据系统必须在弹出窗口上提供一些建议bar基于已存在的用户名。

这是简短的算法:

  • 用户输入一些字符到文本编辑框
  • 系统会通过其中的Web服务调用触发一些更新事件,以更新建议列表数据
  • 文本编辑还必须能够输入并保留自由文本以创建新用户,而不仅仅是查找现有

我无法使用devexpress的lookupeditds - 它们只允许保留数据源中显示的值 - 即使通过添加到数据源在ProcessNewValue内处理了新值,

更新事件会再次触发,刷新我的数据源会覆盖新的唯一值。 现在我期待Combobox控制。但看起来没有能力输入自由文本以及显示建议弹出窗口。

1 个答案:

答案 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属性来控制查找是否接受输入的文本作为有效值,即使它不属于基础数据源。

相关问题