Textbox Infotext

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Textbox Infotext

    Hallo liebe Community,
    da ich leider nichts zu diesem gefunden habe muss ich euch hier leider fragen.

    Ich möchte gerne wissen wie ich einen Infotext in eine Textbox einfüge, welcher beschreibt für was die Textbox ist, aber wenn man dann die Textbox in den Fokus nimmt bzw etwas eintippt das dieser auch wieder verschwindet.

    Beispiel:
    img202.imageshack.us/i/sufu.png/

    Danke euch schonmal

    MfG
    Dafür gibt es die ToolTip-Klasse und eine entsprechnde Tooltip-Komponente in der Toolbox.

    Mach folgendes:
    - zieh eine Textbox auf die Form ( Textbox1 )
    - zieh eine Tooltip Komponente aus der Toolbox auf Deine Form (tooltip1)

    Im Form.Load Event schreibe folgendes:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. ' ToolTip Text für Textbox1 zuordnen
    3. ToolTip1.SetToolTip(Me.TextBox1, "Meine Textbox")
    4. End Sub

    Voilà !
    Ich glaube er meint etwas anderess, und zwar einen Default Text der angezeigt wird, solang das Textfeld leer ist

    Meinst du das?:

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    2. If TextBox1.Text = "" Then
    3. TextBox1.ForeColor = Color.Gray
    4. TextBox1.Text = "<Suchbegriff eingeben>"
    5. Else
    6. TextBox1.ForeColor = Color.Black
    7. TextBox1.Text = TextBox1.Text.Replace("<Suchbegriff eingeben>", "")
    8. End If
    9. End Sub



    link_275 :thumbup:
    Hello World

    Penguin schrieb:

    Jop danke. Einfacher gehts nicht oder?

    Doch: setze im Designer die ForeColor und den Text auf Deinen gewünschten Wert.

    Im Code kannst Du dann das GotFocus Event verwenden:

    VB.NET-Quellcode

    1. Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
    2. Static firstCall As Boolean = True
    3. If firstCall Then TextBox1.ForeColor = Color.Black : TextBox1.Text = "" : firstCall = False ' quick'n dirty
    4. End Sub
    Man kann das ganze auch in ne Klasse packen:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class DefaultTextHandler
    2. Public Shared lTb As New Dictionary(Of String, Tuple(Of TextBox, String))
    3. Public Shared Sub Add(ByVal tb As TextBox, ByVal DefaultText As String)
    4. If lTb.ContainsKey(tb.Name) Then Exit Sub
    5. lTb.Add(tb.Name, New Tuple(Of TextBox, String)(tb, DefaultText))
    6. AddHandler tb.GotFocus, AddressOf TBGotFocus
    7. AddHandler tb.LostFocus, AddressOf TBLostFocus
    8. If tb.Text = String.Empty Then tb.Text = DefaultText
    9. End Sub
    10. Public Shared Sub Remove(ByVal tb As TextBox)
    11. If lTb.ContainsKey(tb.Name) Then
    12. RemoveHandler tb.LostFocus, AddressOf TBLostFocus
    13. RemoveHandler tb.GotFocus, AddressOf TBGotFocus
    14. lTb.Remove(tb.Name)
    15. End If
    16. End Sub
    17. Private Shared Sub TBGotFocus(ByVal sender As Object, ByVal e As System.EventArgs)
    18. Dim t As TextBox = DirectCast(sender, TextBox)
    19. Dim s As String
    20. If lTb.ContainsKey(t.Name) Then
    21. s = lTb.Item(t.Name).Item2
    22. If t.Text = s Then t.Text = String.Empty
    23. End If
    24. End Sub
    25. Private Shared Sub TBLostFocus(ByVal sender As Object, ByVal e As System.EventArgs)
    26. Dim t As TextBox = DirectCast(sender, TextBox)
    27. Dim s As String
    28. If lTb.ContainsKey(t.Name) Then
    29. s = lTb.Item(t.Name).Item2
    30. If t.Text = String.Empty Then t.Text = s
    31. End If
    32. End Sub
    33. Public Shared Sub RemoveAll()
    34. For Each kvp As KeyValuePair(Of String, Tuple(Of TextBox, String)) In lTb
    35. Remove(kvp.Value.Item1)
    36. Next
    37. End Sub
    38. End Class


    und dann zb so:

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. DefaultTextHandler.RemoveAll()
    3. End Sub
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. DefaultTextHandler.Add(TextBox1, "<Ihr Name>")
    6. DefaultTextHandler.Add(TextBox2, "<Ihr Geschlecht>")
    7. DefaultTextHandler.Add(TextBox3, "<Ihr Wombat>")
    8. End Sub


    Mal als Anregung ... (weil man sowas ja ggf öfter braucht)