请教各位高手一个比较棘手的问题(类似联想输入)

杜乐 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里时候,无论如何也是显示不出来比较靠下的几行的。
不知道各位高手有没解决方法,不胜感激
...全文
136 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
杜乐 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
比如我们做股票软件,你输入股票代码就会列出股票,程序启动时,就会把所有股票列表加载到内存,当你输入时,就会遍历列表找到符合条件的股票,当做数据源绑定到显示列表
[/Quote]

我现在不是数据源的问题,而是获得数据源绑定之后的效果无法实现的问题
bdmh 2012-03-28
  • 打赏
  • 举报
回复
比如我们做股票软件,你输入股票代码就会列出股票,程序启动时,就会把所有股票列表加载到内存,当你输入时,就会遍历列表找到符合条件的股票,当做数据源绑定到显示列表
杜乐 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
你先把所有数据加载到内存,然后输入时,从内存中过滤显示
[/Quote]
求思路,现在貌似不是数据源的来源问题,而是控件机制的问题
bcc222 2012-03-28
  • 打赏
  • 举报
回复
能不能少有一些提示呢?比如,统计一下用户的输入的频率,只显示频率最高的前10个!或者是有一定关联的,不过这个就太复杂了!
bdmh 2012-03-28
  • 打赏
  • 举报
回复
你先把所有数据加载到内存,然后输入时,从内存中过滤显示
cheng2005 2012-03-28
  • 打赏
  • 举报
回复
弹出一个window,只不过window只有一个下拉列表而已,至于怎么去控制这个弹出的window,你要做的事情还有很多。

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧