如何捕捉鼠标在自定义控件之外单击或者双击

lmhcs 2010-03-05 08:43:02
vb。net通过设置 AutoCompleteCustomSource、AutoCompleteMode 和 AutoCompleteSource 可以实现文本框自动完成。但美中不足就是,当没有文本框还没有输入的时候,那个下拉框是不会出来的,不管你双击,单击,就是不能实现想百度的搜索框那样,只要双击就能出线下拉框。
我自己想个办法,就是当文本还没有文本的的时候,我自己添加列表框出来给客户选择,当有了文本的时候就关闭自己的文本框,只使用文本框自己的下拉框
因为要用到若干这样的文本,所以我用自定义控件来实现这样的功能 。我创建CustomControl控件,继承自文本框,然后再需要的地方,把列表框显示出来。
现在遇到一个问题,就是当文本框出现自己添加的列表款的时候,客户如果在文本框之外点击一下,比如窗体或者标签之类,点击一下,明显客户是想让列表框关闭,我该怎么捕捉这样的事件呢?当客户在有焦点的空间点击,文本框失去焦点,我可以在levea事件判断,然后关闭,但没有焦点的呢?比如窗体或者标签。因为点击了窗体或者标签,CustomControl并不会失去焦点。我该在哪里捕捉这样的事件呢?一句话,就是在自定义控件中,如何捕捉鼠标在控件之外单击或者双击。
...全文
158 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leayh 2010-03-05
  • 打赏
  • 举报
回复
可以在其它控件的双击事件中设置目标控件啊。
hmzgz81 2010-03-05
  • 打赏
  • 举报
回复
控件之外点击之后给控件发个消息试一试.
lmhcs 2010-03-05
  • 打赏
  • 举报
回复
to2 to3 因为我是想制作程控件的,所以我想是否有方法只对控件中对某个方法,或者消息的操作,从而获得知道鼠标已经在窗体,在标签,在别的地方单击了,需要关闭列表框了。通过MouseLeave事件可以捕捉到鼠标移出,通过leave事件可以知道自定义控件已经失去焦点(即别的控件被激活被双击。。。)但就是好像不知道鼠标在没有焦点的控件单击,因为控件自己还保持焦点。

110,533

社区成员

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

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

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