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