Методы создания подсказки, текста-заполнителя или водяного знака в текстовом поле в VB.NET

Чтобы создать подсказку, текст-заполнитель или водяной знак в элементе управления TextBox в VB.NET, вы можете использовать различные методы. Вот некоторые из часто используемых подходов:

  1. Используйте свойство Text и события GotFocus и LostFocus:
    • Установить текст по умолчанию в качестве начального значения TextBox.
    • В событии GotFocus проверьте, соответствует ли текущий текст тексту по умолчанию, и очистите его, если это так.
    • В событии LostFocus проверьте, пусто ли текстовое поле, и установите текст по умолчанию, если это так.

Пример:

Private Sub TextBox1_GotFocus(sender As Object, e As EventArgs) Handles TextBox1.GotFocus
    If TextBox1.Text = "Enter text here" Then
        TextBox1.Text = ""
    End If
End Sub
Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
    If TextBox1.Text = "" Then
        TextBox1.Text = "Enter text here"
    End If
End Sub
  1. Используйте свойство Tag:
    • Установите текст по умолчанию в качестве значения свойства тега TextBox.
    • В событии GotFocus проверьте, соответствует ли текущий текст тексту по умолчанию, и очистите его, если это так.
    • В событии LostFocus проверьте, пусто ли текстовое поле, и установите текст по умолчанию, если это так.

Пример:

Private Sub TextBox1_GotFocus(sender As Object, e As EventArgs) Handles TextBox1.GotFocus
    If TextBox1.Text = TextBox1.Tag.ToString() Then
        TextBox1.Text = ""
    End If
End Sub
Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
    If TextBox1.Text = "" Then
        TextBox1.Text = TextBox1.Tag.ToString()
    End If
End Sub
  1. Используйте собственный подкласс TextBox:
    • Создайте собственный класс TextBox, наследуемый от TextBox.
    • Переопределите методы OnEnter и OnLeave для обработки поведения заполнителя.
    • Установите текст по умолчанию как личное поле в пользовательском классе.

Пример:

Public Class PlaceholderTextBox
    Inherits TextBox
    Private _placeholderText As String
    Public Property PlaceholderText As String
        Get
            Return _placeholderText
        End Get
        Set(value As String)
            _placeholderText = value
            UpdatePlaceholder()
        End Set
    End Property
    Protected Overrides Sub OnEnter(e As EventArgs)
        MyBase.OnEnter(e)
        ClearPlaceholder()
    End Sub
    Protected Overrides Sub OnLeave(e As EventArgs)
        MyBase.OnLeave(e)
        UpdatePlaceholder()
    End Sub
    Private Sub UpdatePlaceholder()
        If String.IsNullOrEmpty(Text) Then
            Text = PlaceholderText
            ForeColor = Color.Gray
        End If
    End Sub
    Private Sub ClearPlaceholder()
        If Text = PlaceholderText Then
            Text = ""
            ForeColor = SystemColors.ControlText
        End If
    End Sub
End Class