Это модуль расширения, который добавляет метод к элементам управления TextBox и ComboBox, который активирует внутреннюю функциональность Cue Banner 1 . Для TextBox в двух доступных вариантах: Cue Banner виден: a) до тех пор, пока элемент управления не получает фокус, b) после ввода первого символа.
ComboBox Элемент управления удаляет Cue Banner, как только он получает фокус или открывается DropDown
.
Функция Win32 SendMessage используется для изменения поведения элемента управления Edit
- элемента управления TextBox и дочернего элемента управления Edit
ComboBox, отправляя EM_SETCUEBANNER
и CB_SETCUEBANNER
сообщений соответственно.
1 Устанавливает текстовый сигнал или подсказку, отображаемую элементом управления редактированием, чтобы запросить у пользователя информацию.
Поскольку это методы расширения, каждый метод расширяет функциональность элементов управления и может вызываться напрямую:
' The Cue Banner is visible until the control gets focus
TextBox1.SetCueBanner("MM/DD/YYYY", False)
' The Cue Banner is visible until a character is entered
TextBox1.SetCueBanner("User Name...", True)
ComboBox1.SetCueBanner("Select an item...")
Добавить модуль в проект и заменить код, сгенерированный шаблоном с этим:
Public Module ModExtentions
Private Const EM_SETCUEBANNER As Integer = &H1501
Private Const CB_SETCUEBANNER As Integer = &H1703
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
Private Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
End Function
<Extension()>
Public Sub SetCueBanner(tbox As TextBox, ByVal text As String, ByVal showOnFocus As Boolean)
SendMessage(tbox.Handle, EM_SETCUEBANNER, If(showOnFocus, 1, 0), text)
End Sub
<Extension()>
Public Sub SetCueBanner(cbo As ComboBox, ByVal text As String)
SendMessage(cbo.Handle, CB_SETCUEBANNER, 0, text)
End Sub
End Module