求教MouseDown与MouseClick

问题描述

近日在制作一个控件,功能是点击弹出一个带列表的小框框,然后在小框框内进行选择。本来事件的触发一直都在MouseDown内,现在因为需要改到MouseClick里面。所有都不变,改完后,小框框弹出正常,但是无法在小框框内进行选择。小框框内的选择部分有个PreFilterMessage函数,过滤鼠标消息。单击小框框后,两种方法都会进入到该函数进行消息过滤,但是MouseDown在消息过滤后,调用了小框框自身的MouseDown事件,而在MouseClick内触发则调用了控件本身的MouseDown事件。小框框的弹出过程完全一样,仅仅是触发事件的不同而已,求教原因。。

解决方案

解决方案二:
没看懂小框框为什么要做鼠标消息过滤?弹出后,不是已经覆盖窗体了么,点击小框框,怎么还会触发窗体的事件?
解决方案三:
引用1楼Z65443344的回复:

没看懂小框框为什么要做鼠标消息过滤?弹出后,不是已经覆盖窗体了么,点击小框框,怎么还会触发窗体的事件?

因为有其他的控制,譬如当点击在小框框以外怎么办,或者要选择多个选项怎么办等等当用MouseClick触发时,点击小框框后能够触发小框框内部的消息筛选函数,但是接下来就是触发的小框框的父控件的事件,而当用MouseDown触发时,点击小框框后触发小框框内部的消息筛选函数后,触发小框框本身的事件。System.Windows.Forms.Application.AddMessageFilter(this);while(Windows32.User32.WaitMessage()){System.Windows.Forms.Application.DoEvents();if(bolExitLoop)break;}System.Windows.Forms.Application.RemoveMessageFilter(this);这是等待用户操作的函数内部分代码,我怀疑是不是mouseclick触发后,紧接着就有别的事件触发了,导致跳出了循环
解决方案四:
如果你给控件同时注册了鼠标按下和鼠标点击,当然会有2个事件被触发
解决方案五:
事件过滤器中可以判断句柄,通过句柄区分是down的谁,你的逻辑我们搞不明白,所以肯定问题出在点击逻辑上,或者没有区分被操作的对象

时间: 2024-10-22 16:18:11

求教MouseDown与MouseClick的相关文章

如何使鼠标按下后2秒,鼠标样式由default变成hand,在执行mousedown里面的程序

问题描述 [privatevoidpanel1_MouseDown(objectsender,MouseEventArgse){//System.Threading.Thread.Sleep(3000);this.panel1.Cursor=System.Windows.Forms.Cursors.Hand;//怎么把这句话变成延时2秒后再执行.if(e.Button==MouseButtons.Left){......}}因为我想判断mouse如果执行速度小于2秒内就执行click事件,如果鼠

gis开发-新手求教 现在GIS开发多用什么样的开发环境呀

问题描述 新手求教 现在GIS开发多用什么样的开发环境呀 我是个小白 以前从来没接触过什么GIS开发,导师就让我做这个,有点摸不着头脑了,求大神指点!!! 解决方案 看你做哪方面的开发了.桌面或Web用VS +AE VS+SuperMap还有移动 不太清楚 解决方案二: 用ARCGIS engine 和VS就可以,语言使用c#,关于二次开发 的书很多,可以在网上找,按照例子操作一遍熟悉下

新手求教

问题描述 新手求教:我如何打印带条码标签?如:流水码设置为VYYWW000001且不能重复.固定为0,YY为年,WW为周,并且要在数据库里记录打印的流水码数据.

css 样式 求教-求大神指教css样式前后对齐不上

问题描述 求大神指教css样式前后对齐不上 求大神,苦恼一上午了.增加了一个样式通知管理.老前后对其不上, </tr> 可惜c币不够.真心求教 Blockquote 解决方案 </tr>代码送上 解决方案二: 代码能看见吗 </tr> 解决方案三: 看不到代码..把左尖括号去掉后再发来看看 解决方案四: 我的建议是不要用标签属性来定义高宽等,容易受到干扰,改为样式试试 解决方案五: 只能看到一堆 红叉....... 解决方案六: 老兄,你的图--挂了-- 解决方案七:

求教:下面的代码中为何手动抛出异常

问题描述 求教:下面的代码中为何手动抛出异常 栈的pop方法,我们这样写:int pop(){ return array[top--];}然后我看jdk源代码,写法相当于:int pop(){ if(top<0)throw new ArrayIndexOutOfBoundsException(); return array[top--];}然而即使没有增加的那句话,当top等于-1时,Java运行环境仍然会自动帮我们抛出ArrayIndexOutOfBoundsException,那么还要自己手

sql-ASP读取SQL数据表 生成多记录JSON 具体代码如何写 求教大神

问题描述 ASP读取SQL数据表 生成多记录JSON 具体代码如何写 求教大神 数据表是user 主键是m_Name <%response.ContentType=""text/json"" response.write request(""jsoncallback"")%>([{""m_Name"":""*依旧""n_Name&quo

c语言-两道C语言编程题:求教各位大神

问题描述 两道C语言编程题:求教各位大神 两元一瓶啤酒,两个啤酒瓶换一瓶啤酒,四个啤酒瓶盖换一瓶啤酒,输入的金额可以买几瓶. 输入一串字符串,写两个函数,第一个函数使输入的字符串全都后移一位,第二个函数将字符串中的字母大写换小写,小写换大写?. 拜托各位了 谢谢~ 解决方案 第一个问题描述不清,不知道是不是可以借啤酒瓶和瓶盖,我的程序按照不可以编写: #include <stdio.h>int foo(int money){ int c = money / 2; int c1 = 0; int

计算机网络-求教netcat的测试问题,不怎么理解这方面?

问题描述 求教netcat的测试问题,不怎么理解这方面? 5C 我写了一个程序从接口获取数据文件分析以后,合格就从下个端口发送出去,现在代码写完了,我要用netcat测试这个要怎么进行,求教? 解决方案 netstat -anp可以看到各个端口和连接的状态.或者你直接使用tcpdump抓包也可以 解决方案二: [root@kr-sg-test ~]# nc -vuz 42.11.12.13 123Connection to 42.11.12.13 123 port [udp/ntp] succe

javascript-jsp导入js的路径问题 求教!

问题描述 jsp导入js的路径问题 求教! 请教在jsp导入js文件时路径应该要怎么写?已经试过很多种路径了,包括获取绝对路径.现在是这么写的: 文件目录: 我想在findCircleMember.jsp中导入list.min.js.谢谢各位大神! 解决方案 按图中这样写,绝对没问题,如果可以,请采纳. 解决方案二: js 效果失效???? 原因: 两次导入同一种js但不同版本的js包??? 解决: 删掉一个就可以了.......答案就在这里:js 导入到jsp 问题 解决方案三: 还是写绝对路