我有一个具有特定id值的ListView。我使用movemove方法在工具提示中显示有关此id的其他详细信息。
代码是用VB2003编写的,到目前为止,它工作得很好。最近我们迁移到了VB2008。
现在,工具提示闪烁。详情见下文。
希望这对.NET的大个子们来说是一个简单的问题。我是一名Java开发人员,所以我几乎(没有)知道我做错了什么。
编译器设置:目标框架.NET 2.0
代码:
Dim m_HoveredItem As ListViewItem
Private Sub cancellationList_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles CancellationList.MouseMove
Dim lvi As ListViewItem = Me.CancellationList.GetItemAt(e.X, e.Y)
If Not lvi Is m_HoveredItem Then
m_HoveredItem = lvi
If lvi Is Nothing Then
Me.cancelrejectToolTip.SetToolTip(Me.CancellationList, "")
Else
Dim orderText As String() = lvi.Text.Split("(")
Dim orderRef As Integer = CInt(orderText(0).Trim)
Dim orderIsin As String
Dim orderDesc As String
Dim order As AppOrder= New AppOrder(_server, orderRef)
orderIsin = order.Isin
orderDesc = order.OrderDescription
cancelrejectToolTip.SetToolTip(Me.CancellationList, (orderRef.ToString & "/" & orderIsin & "/" & orderDesc))
End If
End If
End Sub
发布于 2012-09-21 12:31:43
看起来鼠标移动一直在可见的工具提示上移动,使其隐藏,但随后鼠标移动使其再次可见,循环继续。最简单的方法是使用Show方法仅偏移工具提示的位置:
Private Sub cancellationList_MouseMove(ByVal sender As Object, _
ByVal e As MouseEventArgs) _
Handles CancellationList.MouseMove
Dim lvi As ListViewItem = Me.CancellationList.GetItemAt(e.X, e.Y)
If Not lvi Is m_HoveredItem Then
m_HoveredItem = lvi
If lvi Is Nothing Then
Me.cancelrejectToolTip.Hide(Me.CancelleationList)
Else
Dim orderText As String() = lvi.Text.Split("(")
Dim orderRef As Integer = CInt(orderText(0).Trim)
Dim orderIsin As String
Dim orderDesc As String
Dim order As AppOrder= New AppOrder(_server, orderRef)
orderIsin = order.Isin
orderDesc = order.OrderDescription
cancelrejectToolTip.Show(orderRef.ToString & "/" & orderIsin & "/" & orderDesc, _
Me.Cancellationlist, _
New Point(e.X + 16, e.Y + 16))
End If
End If
End Sub
https://stackoverflow.com/questions/12530444
复制