怎么在ComboBox的下拉列表中加入树形控件?

slowgrace 2008-10-07 07:38:45
由于商品的品名太多,下拉列表太长,想要给商品分类后使用下拉列表,容易选取,请教怎样在VB里建立树形下拉列表,
...全文
1789 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
peng1113ping 2011-08-22
  • 打赏
  • 举报
回复
这个问题很好,我现在也正想要这样的控件,关注
a_quster 2008-10-19
  • 打赏
  • 举报
回复
用treeview就对了,一点不重量级。
至少不想要拖拽和编辑,这个在treeview里都有开关属性设置,禁止拖拽和编辑就行了。
这是直接一步到位的方法,编程序就应该这样,直观简洁,而且方便。
虽然还有其它很多方法可以实现,但以后再读起来时,很可能都看不懂现在的意图了。
vansoft 2008-10-10
  • 打赏
  • 举报
回复
1、用ComboBox+TreeView可以,用HOOK截取ComboBox的下拉事件,重写。
PS:网上有ComboBox+Listview的代码例子。

2、1的方法肯定不太合适,下拉一般都几项,顶多下几项。
建议用弹出式窗体来选择,这样这个窗体上可设计很多功能,
比如搜索等。

3、智能自动填写提示
就象系统的地址栏,输入c:\后会显示第一层
这个需要实现系统接口,网上也有源码,但对中文支持得不好。
我尝试修改,没有成功。
kmlxk0 2008-10-10
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 SYSSZ 的回复:]
上面一个ComBoBox,下面一个TreeView就是这样的效果
[/Quote]

同意。只借用ComboBox上面的造型,处理事件,在该弹出列表时,弹出含有TreeView的无边框窗口,这就是你要的效果了。

不过实现起来还是有很多细节
Tiger_Zhao 2008-10-10
  • 打赏
  • 举报
回复
Microsoft Windows Common Controls 6.0 中有个 ImageCombo,可以指定每个项目的图片和缩进,除了没有 TreeLine 样式,完全可以表示一个树型列表。

不过还是一句话,大数据量列表不适合用 Combo 控件。
cxplqy 2008-10-10
  • 打赏
  • 举报
回复
ComboBox + vsflexgrid
可以达到你想要的效果
SYSSZ 2008-10-09
  • 打赏
  • 举报
回复
上面一个ComBoBox,下面一个TreeView就是这样的效果
Tiger_Zhao 2008-10-09
  • 打赏
  • 举报
回复
商品数据量大的话,如果需要在界面上放多个商品ComboBox,资源耗用大而且初始化速度受影响。

不如用文本框+右边小按钮的方式。
用户可以直接在文本框中输入编码,也可以点击小按钮,弹出一个对话框;对话框上放一个TreeView供用户浏览选择。
该对话框尽量不要卸载,通过Hide方式保留实例供多次使用。

这样的方案速度和方便性都兼顾了。
peterb 2008-10-09
  • 打赏
  • 举报
回复
WinForm吗? C#写的网上看到过几个 lz可以自己改造一下
CodeProject上面就有好几个,类似下面这个?可以参照一下

http://www.cnblogs.com/xiongeee/archive/2007/03/03/662468.html
踏平扶桑 2008-10-09
  • 打赏
  • 举报
回复
你一次显示上千行,这样从用户交互角度来说不太好吧。一下看到这么多,会晕的。。呵呵~~
slowgrace 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 peterb 的回复:]
WinForm吗? C#写的网上看到过几个 lz可以自己改造一下
CodeProject上面就有好几个,类似下面这个?可以参照一下

http://www.cnblogs.com/xiongeee/archive/2007/03/03/662468.html
[/Quote]

谢谢,我想要的正是这样的!!!


我是在ACCESS用VBA编程,用在ACCESS的用户窗体里,和VB的窗体类似。用C#写的我该如何调用呢?
slowgrace 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 Tiger_Zhao 的回复:]
商品数据量大的话,如果需要在界面上放多个商品ComboBox,资源耗用大而且初始化速度受影响。

不如用文本框+右边小按钮的方式。
用户可以直接在文本框中输入编码,也可以点击小按钮,弹出一个对话框;对话框上放一个TreeView供用户浏览选择。
该对话框尽量不要卸载,通过Hide方式保留实例供多次使用。

这样的方案速度和方便性都兼顾了。
[/Quote]

谢谢tiger分享宝贵经验,你说的在理呢。不过我还是不死心呢,你看看21楼吧。

对了,你教我的outer join我写在博客里了,就是那篇权宜之计,不过还是出了些小状况……
slowgrace 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 SupermanKing 的回复:]
作东西不用太死脑精的,你做一个文本框,旁边放个按钮“浏览”,
然后弹出窗口选择信息后返回还好吗,而且数据大的话窗口中还可以做搜索功能。
对使用用户和开发人员来说都是好事。你这么多东西用下拉来找,通常下拉现实的只有13条数据。
上千条这么个找法太累人了,一不小心丢失焦点(如弹出个QQ广告)就白选了。
[/Quote]

恩 你说的在理咧。这不是想学个新技巧么,看21楼吧,先BS一下自己的死脑精
现在还是人类 2008-10-09
  • 打赏
  • 举报
回复
作东西不用太死脑精的,你做一个文本框,旁边放个按钮“浏览”,
然后弹出窗口选择信息后返回还好吗,而且数据大的话窗口中还可以做搜索功能。
对使用用户和开发人员来说都是好事。你这么多东西用下拉来找,通常下拉现实的只有13条数据。
上千条这么个找法太累人了,一不小心丢失焦点(如弹出个QQ广告)就白选了。
slowgrace 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 5653325 的回复:]
你一次显示上千行,这样从用户交互角度来说不太好吧。一下看到这么多,会晕的。。呵呵~~
[/Quote]

你说的对咧,所以想用树表现出来,一开始只有几行,逐级打开定位到用户想要的。
zhufenghappy 2008-10-09
  • 打赏
  • 举报
回复
用treeview控件覆盖ComboBox的下拉框的内容,用鼠标事件触发把选择的节点信息传给ComboBox.text。关键要控制好,使可以实现的。
Amuro1987218 2008-10-09
  • 打赏
  • 举报
回复
ComboBox下拉列表窗口其实是个独立的 ,是 ComboLBox,但VB的话可能会更加麻烦,但似乎可以考虑在这个窗口里放个树型列表
现在还是人类 2008-10-08
  • 打赏
  • 举报
回复
那就只有自己做控件了
slowgrace 2008-10-08
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 SupermanKing 的回复:]
你是不是像是想用 ImageCombo 控件,也是 Microsoft Windows Common Controls 控件中的一个,
效果就像“我的电脑”地址栏的下拉列表一样。

语法
ImageCombo1.ComboItems.Add 索引号,关键字,标题,图片号,选择时的图片号,缩进等级

如:
ImageCombo1.ComboItems.Add , , "主题1", , , 1
ImageCombo1.ComboItems.Add , , "主题2", , , 2
ImageCombo1.ComboItems.Add , , "主题3", , , 2
ImageCombo1.ComboItems…
[/Quote]

谢谢。不完全是这样,我需要能展开折叠。+、-
fvflove 2008-10-08
  • 打赏
  • 举报
回复
自己做个自定义控件就行了.

一个下拉框,一个文本框,一个列表框.一个TreeView 你看要那几个组合在一起就行了.
加载更多回复(28)

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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