以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  MouseLeave事件有些问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=120928)

--  作者:桃花笑
--  发布时间:2018/6/26 14:44:00
--  MouseLeave事件有些问题

我要实现的功能是,显示Panel2,当我鼠标离开panel2的区域,则不显示panel2,
结果是,我鼠标在panel2的范围,panel2会不显示。这是什么原因导致的


 图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/6/26 15:51:00
--  
Dim x As Integer = System.Windows.Forms.Cursor.Current.Position.X
Dim y As Integer = System.Windows.Forms.Cursor.Current.Position.Y
Dim P As Point = e.Form.panel.PointToScreen(e.Sender.Location)
\'msgbox(x & " " & y & vbcrlf & p.x+e.sender.width & " " & p.y+e.sender.height)
If x <= p.x OrElse x >= p.x+e.sender.width OrElse y <= p.y OrElse y >= p.y+e.sender.height
    e.sender.visible = False
End If

--  作者:桃花笑
--  发布时间:2018/6/27 13:36:00
--  
 从角落离开,这个事件还是出发不了,如下图

我想实现的功能:只要离开panel就关闭panel,和没触发mouseleave,点击了不是panel,panel就关闭
点击任何不适panel的地方,panel都要能关闭

图片点击可在新窗口打开查看
[此贴子已经被作者于2018/6/27 13:45:44编辑过]

--  作者:有点甜
--  发布时间:2018/6/27 14:56:00
--  

执行代码,可以放到click、mousemove、timertick等事件

 

Dim x As Integer = System.Windows.Forms.Cursor.Current.Position.X
Dim y As Integer = System.Windows.Forms.Cursor.Current.Position.Y
Dim P As Point = e.Form.panel.PointToScreen(e.form.controls("panel2").Location)
\'msgbox(x & " " & y & vbcrlf & p.x+e.sender.width & " " & p.y+e.sender.height)
If x <= p.x OrElse x >= p.x+e.sender.width OrElse y <= p.y OrElse y >= p.y+e.sender.height

    e.form.controls("panel2").visible = False
End If


--  作者:桃花笑
--  发布时间:2018/6/27 17:10:00
--  
 这个效果跟之前一样,又没有什么办法设置,只要不再panel范围内,就关闭panel

click、mousemove这两种事件试过了,后面这种没有找到timertick事件
[此贴子已经被作者于2018/6/27 17:16:13编辑过]

--  作者:有点甜
--  发布时间:2018/6/27 17:25:00
--  

1、写在窗口的click、mousemove事件啊;

 

2、timertick事件参考 http://www.foxtable.com/webhelp/scr/1301.htm