当我将鼠标悬停在控件上时,VB.NET Form运行mouse.leave代码

时间:2015-04-11 19:02:21

标签: vb.net

当我进入并用鼠标离开时,我正试图让表单变大和缩小。但是,当鼠标指针移过控件时,它会运行mouse.leave脚本。我该如何阻止它?

Mouse.Leave code

Private Sub frm_MouseLeave(ByVal sender As System.Object, ByVal e As EventArgs)
    Dim frm1 As Form = DirectCast(sender, Form)
    frm1.Opacity = 0.4
    frm1.Controls.Clear()
    frm1.BringToFront()
    frm1.Size = New Size(20, 50)
    Dim test As Integer = 1
    Dim counter As Integer = 0
    Dim yaxis As Integer = 0
    Dim fin As Boolean = False
    Do Until fin = True
        If frm1.Name = "frm" & test Then
            yaxis = counter
            fin = True
        Else
            counter += 10 + frm1.Height
            test += 1
        End If
    Loop
    frm1.Location = New Point(My.Computer.Screen.Bounds.Size.Width - frm1.Width, yaxis)
End Sub

Mouse.enter代码

    Private Sub frm_MouseEnter(ByVal sender As System.Object, ByVal e As EventArgs)
    Dim frm1 As Form = DirectCast(sender, Form)
    Dim lbl As Label = New Label
    Dim btn As Button = New Button
    Dim index As Integer = 0
    For Each ch As Char In frm1.Name
        If IsNumeric(ch) Then
            index = index & ch
        End If
    Next
    index -= 1
    frm1.Controls.Add(lbl)
    lbl.Text = listbox.Items.Item(index)
    lbl.ForeColor = Color.White
    lbl.AutoSize = True
    lbl.Location = New Point((frm1.ClientSize.Width) / 2, (frm1.ClientSize.Height) / 2)
    lbl.Show()
    frm1.Controls.Add(btn)
    btn.Text = "X"
    btn.ForeColor = Color.White
    btn.BackColor = Color.Black
    btn.Font = New Drawing.Font("Arial", 12)
    btn.AutoSize = True
    btn.Location = New Point(200 - btn.Width, 0)
    frm1.Opacity = 1
    frm1.BringToFront()
    frm1.Size = New Size(200, 100)
    Dim test As Integer = 1
    Dim counter As Integer = 0
    Dim yaxis As Integer = 0
    Dim fin As Boolean = False
    Do Until fin = True
        If frm1.Name = "frm" & test Then
            yaxis = counter
            fin = True
        Else
            counter += 60
            test += 1
        End If
    Loop
    frm1.Location = New Point(My.Computer.Screen.Bounds.Size.Width - frm1.Width, yaxis)
End Sub

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

每当您输入一个控件时,您将为控件生成一个MouseEnter事件,并为表单生成一个MouseLeave事件,我会查看检查鼠标的位置以及它是否包含在Form退出中MouseLeave事件。尝试一下,看看它是否适合你。

If frm1.ClientRectangle.Contains(PointToClient(MousePosition)) Then Exit Sub

另外,如果您不打算将此代码用于多个表单,您可以使用Me关键字来引用表单的属性

If Me.ClientRectangle.Contains(PointToClient(MousePosition)) Then Exit Sub