Myslím že to bude problém a že to budete muset vyřešit jinak (například po klepnutí myší do PictureBoxu). Zkoušel jsem následující kód (pokud to chcete vyzkoušet, nastavte vlastnost OwnerDraw u ToolTipu na True, a vlastnost ToolTip on ToolTip1 u tlačítka na libovolný text):
Public Class Form1
Private Sub ToolTip1_Draw(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawToolTipEventArgs) Handles ToolTip1.Draw
Dim toolTipText = "Nový popisek"
Dim bounds As New Rectangle
With e.Bounds
bounds.X = .X
bounds.Y = .Y
bounds.Width = CInt(e.Graphics.MeasureString(toolTipText, e.Font, Screen.PrimaryScreen.WorkingArea.Width).Width)
bounds.Height = .Height
End With
Dim newEventArgs As New DrawToolTipEventArgs(e.Graphics, _
e.AssociatedWindow, _
e.AssociatedControl, _
bounds, _
toolTipText, _
SystemColors.Info, _
SystemColors.InfoText, _
e.Font)
e = newEventArgs
e.DrawBackground()
e.DrawBorder()
e.DrawText()
End Sub
End Class
Tento kód zajišťuje vlastní obsluhu vykreslování popisku, tudíž teoreticky je právě toto místem, kde by se měl dát vykreslovaný text změnit. Jenže problém je v tom, že šířka oblasti pro vykreslování popisku se nějak vnitřně vypočítává podle původního textu a předání nové oblasti pro vykreslování (bounds) na to nemá vliv. Výsledný efekt je tedy to, že nový text se nemusí vejít do popisku.
|