Ein freundliches Hallo und guten Morgen in die Runde,
ich habe eine Listbox auf der Form, die mit Artikel-Nummern befüllt wird. Wenn ich jetzt mit der Maus über ein Item in der Listbox fahre, soll im Filesystem ein kleines Bildchen passend zur Artikel-Nummer gesucht und im Tooltip angezeigt werden.
Das klappt soweit auch ganz gut, leider "flackert" das Tooltip, obwohl die Maus nicht bewegt wird. Ich weiß leider nicht, ob und wie man dies abstellen kann, deshalb frage ich hier mal nach.
Folgenden Code habe ich aktuell im Einsatz:
Vielen Dank für die Hilfe!
Grüße Markus
ich habe eine Listbox auf der Form, die mit Artikel-Nummern befüllt wird. Wenn ich jetzt mit der Maus über ein Item in der Listbox fahre, soll im Filesystem ein kleines Bildchen passend zur Artikel-Nummer gesucht und im Tooltip angezeigt werden.
Das klappt soweit auch ganz gut, leider "flackert" das Tooltip, obwohl die Maus nicht bewegt wird. Ich weiß leider nicht, ob und wie man dies abstellen kann, deshalb frage ich hier mal nach.
Folgenden Code habe ich aktuell im Einsatz:
VB.NET-Quellcode
- Protected Overrides Sub OnLoad(ByVal e As EventArgs)
- MyBase.OnLoad(e)
- ToolTip1.OwnerDraw = True
- End Sub
- Private Sub ToolTip1_Popup(ByVal sender As Object, ByVal e As PopupEventArgs) Handles ToolTip1.Popup
- e.ToolTipSize = New Size(160, 170)
- End Sub
- Private Sub ToolTip1_Draw(ByVal sender As Object, ByVal e As DrawToolTipEventArgs) Handles ToolTip1.Draw
- If My.Computer.FileSystem.FileExists(hover_image_path & hover_image & ".jpg") Then
- hover_bild = System.Drawing.Image.FromFile(hover_image_path & hover_image & ".jpg")
- Else
- hover_bild = System.Drawing.Image.FromFile(hover_image_path & "no_image.jpg")
- End If
- e.Graphics.Clear(SystemColors.ControlText)
- e.Graphics.DrawImage(hover_bild, New Point(16, 16))
- TextRenderer.DrawText(e.Graphics, e.ToolTipText, e.Font, _
- New Rectangle(50, 80, e.Bounds.Width - 72, e.Bounds.Height - 16), _
- SystemColors.ControlText, Color.White, _
- TextFormatFlags.WordBreak Or TextFormatFlags.VerticalCenter)
- End Sub
- Private Sub ListBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove
- Dim index As Integer = ListBox1.IndexFromPoint(e.Location)
- If index <> -1 AndAlso index < ListBox1.Items.Count Then
- If ToolTip1.GetToolTip(ListBox1) <> ListBox1.Items(index).ToString Then
- hover_image = ListBox1.Items(index).ToString
- hover_image = hover_image.Substring(0, 7)
- hover_text = ListBox1.Items(index).ToString
- hover_text = hover_text.Substring(0, 2) & "." & hover_text.Substring(2, 3) & "." & hover_text.Substring(5, 2) & "." & hover_text.Substring(7, 2)
- ToolTip1.SetToolTip(ListBox1, hover_text)
- End If
- End If
- End Sub
Vielen Dank für die Hilfe!
Grüße Markus