请教各位高手一个比较棘手的问题(类似联想输入)
杜乐 2012-03-28 01:29:52 现在想在winfrom 中实现类似百度搜索栏一样的功能,就是当用户在输入文字后从数据库中提取相关数据前十条提示在下面。
在网上也查找过资料,
1、使用textbox的AutoCompleteMode为suggestAppend这样的属性,带来的问题就是无法根据用户的输入动态绑定前十条数据。如果通过textchanged来动态绑定数据,由于上面的属性会不停的触发textchanged事件。
例如,数据库前里有aa,ab,ac,ad,abc
当客户输入a,由于suggestAppend,就会变成aa,这时候触发textchanged,就会根据aa重新绑定数据源,那么客户永远无法选择到ab
2、这时候我想到把AutoCompleteMode设置为suggest,这时候带来的问题是,当数据库里有中国,中华,中影,中央人民。
当客户输入汉字中央,当中字进入textbox 就会触发textchanged,开始重新绑定数据源,但之后的央就被“吃”了。也就是说用户只能一个字一个字的输入。
3、后来我想自己做一个相同的效果的自定义控件,上面放一个textbox,下面放一个listbox,通过隐藏和高度计算以及显示来达到同样的效果,但带来的问题是控件不能超出窗体本身。如果有10条数据,listbox会很高,那么相对应的usercontrol也会很高。那么将这个自定义控件放到别的窗体的时候,就要求别的窗体也能容纳下这个用户控件。这时候用户在不使用的时候,只有一个文本框显示,而下面空着一大片地方给人很不舒服。就算动态控制高度,如果这个控件是放在一个本身就不高的panel里时候,无论如何也是显示不出来比较靠下的几行的。
不知道各位高手有没解决方法,不胜感激