让.Net CF实现智能提示(AutoComplete)功能
2010-09-15 23:58:00 来源:WEB开发网前言
最近,一直在做Winform方面的开发,有一个公交信息查询的场景,用户在起始站输入框输入部分站点名称,系统能够自动给他建议和提示,类似 Google中的自动补全、智能提示之类的功能,在Winform或者WebForm下,.Net都提供了不错的解决方案,甚至可以直接用Ajax中的 AutoComplete控件。
但是,问题来了,这个功能要移植到WM平台,我们平常在使用WM手机都可以知道,输入是一件比较麻烦的事情,总是喜欢点点、滑滑、拖拖……反正就是不喜欢输入吧……平常查公交站点,在谷歌里面,都是输入几个关键字就能“被”补全,也许,我有时候都不记得站点的全名了>_<|||。
本想直接用Combox的,发现其没有自动补全功能,谷歌百度一把,发现没有太好的“轮子”,于是,我只有自己造一个带自动补全功能的Combox了。
正文
虽然没有正式的去研究过AutoComplete这个功能,不过,自己想想,也能山寨一个吧。我的思路如下:
先把站点列表填充好,等待用户输入的关键词
用户输入关键词,每输入一个字,进行站点列表遍历,查找符合条件的站点,并把它们加入“候补列表”
用户可以通过Combox的下拉按钮展开Items,查看系统给出的“建议”站点
用户修改关键词,系统重新比对、填充“候补列表”
用户关键词越详细,候补列表越精确
有了思路,好像还不错,于是就开始Coding吧。和所有WM项目一样,在设计界面,拖放一个Combox控件到窗体内,并设置Combox的 Dock为Top。就这么简单吧。当然,在这里,我们还是一切从简,我没有把站点数据库加载到程序中(实际上,客户下载了程序后,自带了一个SQLite 数据库存储站点信息),各位看了我的代码,估计基本能够理解了吧。
定义两个泛型变量,用于存储List信息:
代码
1 /// 2 /// 这个List用于存放站点列表,实际中 3 /// 站点可能是字符串类型也可能是整型,视具体情况而定 4 /// 5 private List liStops; 6 /// 7 /// 这个List用于存放候选的站点,也即自动补全的建议项 8 /// 类似于google的候选项目 9 /// 10 private List liSuggest;
更多精彩
赞助商链接