类似Combobox下拉列表收起功能!!!

twohorses 2018-11-14 01:57:11
vb中的Combobox控件,下拉列表打开后,点击Combobox控件以外的其他控件,下拉列表就会收起。我自定义了一个控件,使用text和listbox组合起来的,当listbox显示出来后,点击其他地方怎么能让listbox隐藏起来,失去焦点的事件不行,因为点击窗体或label等控件时,不会触发失去焦点的事件,有什么办法可以做成类似Combobox的功能?Combobox是什么原理?不可能遍历所有控件的click事件吧
...全文
951 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2018-12-20
  • 打赏
  • 举报
回复
楼上两位: 你们的ComboBox,能有这种效果么…………

良朋 2018-12-20
  • 打赏
  • 举报
回复
你想做一个类似Combobox控件?为什么不用Combobox控件, 你可以修改Combobox的drop属性,达到你要的效果。
思考 2018-11-22
  • 打赏
  • 举报
回复
你想做一个类似Combobox控件?为什么不用Combobox控件
twohorses 2018-11-17
  • 打赏
  • 举报
回复
引用 6 楼 chewinggum 的回复:
把你这几个东西封装成一个UserControl对象,在UserControl_LostFocus() 事件里面隐藏你的文本框呢。 然后整体当做一个控件使用,多舒服,不要在form上倒腾太多。
问题是你点击窗体或者其他控件,根本捕捉不到UserControl_LostFocus() 这个事件?
脆皮大雪糕 2018-11-15
  • 打赏
  • 举报
回复
把你这几个东西封装成一个UserControl对象,在UserControl_LostFocus() 事件里面隐藏你的文本框呢。
然后整体当做一个控件使用,多舒服,不要在form上倒腾太多。
twohorses 2018-11-14
  • 打赏
  • 举报
回复
引用 4 楼 Chen8013 的回复:
用SetCapture (大概是这个名字)这个API。 在List显示之后,把“鼠标捕捉”设置到 ListBox 上。 然后,在ListBox 的Click事件中,ReleaseCapture和隐藏List控件。 不过在IDE中运行时,似乎“有点不正常”,但编译后的exe是完全正常的。
这个感觉有可能,回头试试
舉杯邀明月 2018-11-14
  • 打赏
  • 举报
回复
用SetCapture (大概是这个名字)这个API。

在List显示之后,把“鼠标捕捉”设置到 ListBox 上。
然后,在ListBox 的Click事件中,ReleaseCapture和隐藏List控件。

不过在IDE中运行时,似乎“有点不正常”,但编译后的exe是完全正常的。
twohorses 2018-11-14
  • 打赏
  • 举报
回复
引用 2 楼 of123 的回复:
否则,要靠点击其他位置隐藏,就要在包括 Form 的所有控件的 GotFocus 事件中都写上使 ListBox 隐藏的语句。
vb自带的combobox是什么原理,点击其他地方下拉列表就自动收起;甚至点击其他软件的时候也会收起。
of123 2018-11-14
  • 打赏
  • 举报
回复
否则,要靠点击其他位置隐藏,就要在包括 Form 的所有控件的 GotFocus 事件中都写上使 ListBox 隐藏的语句。
of123 2018-11-14
  • 打赏
  • 举报
回复
其实有一个更加合理的方法,在 TextBox 中嵌入一个按钮控件。ListBox 不可见时,它呈现一个向下的三角,点击显示 ListBox,同时显示为一个相向上的三角。再点击,使 ListBox 的 visible 属性为假。

1,453

社区成员

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

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