WEB开发网
开发学院手机开发Windows Mobile 开发 让.Net CF实现智能提示(AutoComplete)功能 阅读

让.Net CF实现智能提示(AutoComplete)功能

 2010-09-15 23:58:00 来源:WEB开发网   
核心提示:关键的AutoComplete代码(个人感觉山寨到不行……cbInput为Combox控件):AutoComplete代码1 /// 2 /// 此方法用于自动补全Combox的Items,让Items的项目和用户输入的 3 /// 关键字相匹配 4 /// 5 /// 用户输入的关键字/词 6 private voi

关键的AutoComplete代码(个人感觉山寨到不行……cbInput为Combox控件):

AutoComplete代码

1 /// 2 /// 此方法用于自动补全Combox的Items,让Items的项目和用户输入的 3 /// 关键字相匹配 4 /// 5 /// 用户输入的关键字/词 6 private void FillListBox(string text) 7 { 8 9 foreach (string item in liStops)10 {11 if (item.IndexOf(text) > -1)//如果该站点包含关键词,则往候补Items中添加这个站点12 {13 liSuggest.Add(item);14 }15 }16 17 foreach (object obj in liSuggest)//把候补List中的项目填充到Combox中,让用户感觉是Combox自动完成填补18 {19 cbInput.Items.Add(obj.ToString());20 }21 }

然后,为Combox的KeyUp事件添加如下代码:

代码

1 private void cbInput_KeyUp(object sender, KeyEventArgs e) 2 { 3 liSuggest = new List(); 4 liSuggest.Clear();//清空上一次的候补项目 5 6 cbInput.Items.Clear(); 7 string text = null; 8 switch (e.KeyCode)//获取本次用户按下的按钮code 9 {10 case Keys.Left:11 case Keys.Up:12 case Keys.Right:13 case Keys.Down:14 case Keys.Delete:15 return;16 default:17 text = cbInput.Text.Trim();18 FillListBox(text);19 break;20 }21 }

注意,为了简化操作,我的站点列表在Form_Load事件中进行填充:

Form_Load代码

1 private void Form1_Load(object sender, System.EventArgs e)2 {3 liStops = new List();4 for (int i = 0; i < 299; i++)//我定义了窗体Load时,填充站点List,实际中,我们需要选择最佳时机来填充这个List5 {6 liStops.Add(i.ToString());7 }8 }

Ok,至此,一个.Net CF版带AutoComplete功能的、山寨的Combox就实现了。效果如下,感觉还不错……

 

好了,演示结束,实际上,使用中发现,站点列表用什么方式、怎么放到Combox的Items中是一个很有意思的问题,它会影响到用户体验,比如动态加载的时候会有明显延时,都待大家讨论了哦……Jack就暂时先写到这里吧。

最后,推荐一篇老赵的文章《泛型真的会降低性能吗?》 虽然有点年头,不过,很值得一品!

也许,你也应该到这里看看dalelane朋友的这篇文章,也许,这就是正牌的AutoComplete了吧:http://dalelane.co.uk/blog/?p=166

作者:Jack Fan(初学博闻 of .NET CF/.Net)

出处:http://longqi293.cnblogs.com

上一页  1 2 

Tags:Net CF 实现

编辑录入:coldstar [复制链接] [打 印]
赞助商链接