Meinst Du so etwas?
Die Controls sind in einer Liste angeordnet.
Du kannst eventuell auch die Liste des Formulars nutzen
Die Hilfetexte stehen jeweils in der Tag-Eigenschaft der Controls.
Der Timer sorgt dafür, dass der Tooltip nach 5 Sekunden wieder verschwindet.
Public Class frmHelpList
Dim ctrls As New List(Of Control) 'Liste der Controls für Hilfe
Dim hlpLabel As New Label With {.Parent = Me,
.BackColor = SystemColors.Info, .AutoSize = True}
Dim WithEvents hlpButton As New Button With {.Parent = Me,
.Left = 300, .Text = "?"}
Dim hlpIndex As Integer = -1 'Listenindex für Hilfetexte
Dim WithEvents hlpTimer As New Timer With {.Interval = 1000}
Dim starttime As DateTime 'Startzeit der Anzeige des Hilfetextes
Private Sub frmHelpList_Load(sender As Object, e As EventArgs) Handles _
MyBase.Load
Me.Size = New Size(500, 300)
'Erstellen, Einrichten und Positionieren einiger Controls
ctrls.Add(New Button With {.Parent = Me, .Text = "Number One",
.Location = New Point(100, 100), .Width = 150,
.Tag = "Hilfe für Button"})
ctrls.Add(New Label With {.Parent = Me, .Text = "Number Two",
.Location = New Point(300, 100), .Width = 100,
.Tag = "Hilfe für Label"})
ctrls.Add(New TextBox With {.Parent = Me, .Text = "Number Three",
.Location = New Point(100, 200), .Width = 150,
.Tag = "Hilfe für Textbox"})
ctrls.Add(New CheckBox With {.Parent = Me, .Text = "Check",
.Width = 100, .Left = 400,
.Tag = "Hilfe für die Checkbox"})
End Sub
Private Sub hlpButton_Click(sender As Object, e As EventArgs)
Handles hlpButton.Click
'Verwaltung des Listenindex
hlpIndex += 1
If hlpIndex = ctrls.Count Then hlpIndex = 0
'Einrichten und Positionieren des Hilfelabels
With hlpLabel
.Text = ctrls(hlpIndex).Tag 'Hilfetext besorgen
'Text oben oder unten
.Top = ctrls(hlpIndex).Top - .Height
If .Top < 1 Then
.Top = ctrls(hlpIndex).Top + ctrls(hlpIndex).Height
End If
'zu langen Text nach links verschieben
.Left = Math.Min(ctrls(hlpIndex).Left, Me.Width - .Width - 20)
.Visible = True
'Timer starten
starttime = Now
hlpTimer.Enabled = True
End With
End Sub
Private Sub hlpTimer_Tick(sender As Object, e As EventArgs)
Handles hlpTimer.Tick
Dim displayseconds As Integer = 5
Dim elapsed As Integer = (Now - starttime).Seconds
If elapsed > displayseconds Then
hlpLabel.Visible = False
hlpTimer.Enabled = False
End If
End Sub
End Class |