WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院手机开发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 [复制链接] [打 印]
赞助商链接