|
Wie jedes andere Steuerelement auch, wird ebenfalls ein
selbstgeschriebenes UserControl "von außen" von Visual
Basic mit einer ToolTipText-Eigenschaft
versehen. Das Tooltipfähnchen wird jedoch nur angezeigt, wenn der
Anwender den Mauszeiger direkt über die "nackte"
Oberfläche des UserControls fährt. Enthält das UserControl jedoch
andere Steuerelemente, funktioniert das so nicht - es werden
höchstens die Tooltips angezeigt, die in den
ToolTipText-Eigenschaften dieser Steuerelemente beim Programmieren
des UserControls festgelegt wurden.
Sie können jedoch recht einfach einen für das gesamte
UserControl gültigen Tooltip anzeigen lassen, auch über den darauf
sitzenden Steuerelementen, soweit diese selbst ein
MouseMove-Ereignis abliefern (unrühmliche Ausnahme: die ComboBox).
Dazu weisen Sie in den MouseMove-Ereignisprozeduren dieser
Steuerelemente deren ToolTipText-Eigenschaft den Inhalt der
ToolTipText-Eigenschaft des Extender-Objekts
zu.
Die einzige, kleinere Unsauberkeit tritt beim Überstreichen der
Grenze von einem der Steuerelemente zum anderen bzw. zur Oberfläche
des UserControls selbst auf - der angezeigte Tooltip verschwindet
kurzzeitig.
Vielleicht werden Sie auf den ersten Blick eine Möglichkeit,
etwa ein Ereignis, vermissen, einen von außen, beispielsweise durch
den Anwender geänderten ToolTipText sogleich an die betreffenden
Steuerelemente weiter zu reichen. Doch dies ist gar nicht notwendig.
Sobald der Mauszeiger sich über einem der Steuerelemente bewegt,
erhält dieses ja den Text des Tooltips zugewiesen und wird ihn nach
Verstreichen der entsprechenden Zeitspanne anzeigen. Eine
Notwendigkeit, den Text eines Tooltips während der Anzeige zu
ändern besteht eigentlich nicht - Sie könnten aber damit
ungewöhnliche Effekte erzeugen ( Kreisverkehr
im ToolTip).
Das Beispiel zeigt ein UserControl, auf dem ein CommandButton und
eine Listbox platziert sind. Beide übernehmen den dem UserControls
von "außen" zugewiesenen ToolTip und zeigen diesen an.
Private Sub Command1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
With Extender
If Command1.ToolTipText <> .ToolTipText Then
Command1.ToolTipText = .ToolTipText
End If
End With
End Sub
Private Sub List1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
List1.ToolTipText = Extender.ToolTipText
End Sub
Private Sub UserControl_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Dim nToolTipText As String
With Extender
nToolTipText = .ToolTipText
.ToolTipText = nToolTipText
End With
End Sub
 |
Befindet sich der Mauszeiger über einem
Steuerelement des UserControls, erhält dieses den
übergeordneten ToolTipText zugewiesen

|
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub txtToolTipText_Change()
ucMitToolTips.ToolTipText = txtToolTipText.Text
End Sub
Private Sub txtToolTipText_GotFocus()
With txtToolTipText
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub
 |
Code des Testbeispiels

|

|