鼠标光标下的工具提示 - 闪烁

时间:2016-08-05 10:43:39

标签: vb.net

我在鼠标光标下设置了工具提示,但它一直闪烁,即使光标没有移动也是如此。关于如何防止工具提示闪烁的任何想法?

代码:

<iframe ng-src="url"></iframe>

1 个答案:

答案 0 :(得分:1)

经过一些测试后,似乎一旦显示工具提示,DataGridView暂时失去焦点。当它重新获得焦点时,再次调用MouseMove事件会导致工具提示关闭并再次重新显示,因此它会无限延续,占用CPU和一些RAM,直到将鼠标移动到单元格之外。

解决此问题的最简单方法是,自上次调用MouseMove以来检查鼠标是否移动,然后仅重新显示工具提示 如果 < / em>鼠标移动了。

我使用CellMouseMoveCellMouseLeave事件来保存额外的检查,如果鼠标位于单元格上方:

Dim PreviousCursorPos As New Point(-1, -1)

Private Sub DataGridView1_CellMouseMove(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseMove
    If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 AndAlso _
        PreviousCursorPos <> Cursor.Position Then 'If the mouse is not in the same position as before, then execute the code.

        DataGridView1.Cursor = Cursors.Help
        ToolTip1.Active = True

        Dim cp = Cursor.Position
        cp.Y += CInt(Cursor.Size.Height * 0.2)
        cp.X += CInt(Cursor.Size.Width * 0.8)

        ToolTip1.Show("Details...", Me, Me.PointToClient(cp))

        PreviousCursorPos = Cursor.Position
    End If
End Sub

Private Sub DataGridView1_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseLeave
    DataGridView1.Cursor = Cursors.Default
    ToolTip1.Active = False
End Sub

移动鼠标时,工具提示会闪烁一下,但一旦它仍然存在问题。