3

特定の id 値を持つ ListView があります。movemove メソッドを使用して、この ID に関する追加の詳細をツールチップに表示しています。

コードは VB2003 で書かれており、今まで完全に機能していました。最近、VB2008 に移行しました。

ツールチップがちらつくようになりました。詳細は以下。

これが .NET の大物にとって簡単なものであることを願っています。私は Java EE 開発者なので、何が間違っていたのかについてほとんど (まったく) 手がかりがありません。

コンパイラ設定: ターゲット フレームワーク .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
4

1 に答える 1

1

マウスの動きが表示されているツールチップの上を移動し続けて非表示になっているように見えますが、マウスの動きによって再び表示され、サイクルが続きます。最も簡単な方法は、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
于 2012-09-21T12:31:43.107 に答える