Шрифт:
'формат ###-##-####.
If (Me.Text.Length = SSNumberLength) Then
'Да, мы имеем полный номер карточки социального страхования
m_inputIsFullValidEntry = True
Else
'Нет, мы пока не получили полный номер карточки социального страхования
m_inputIsFullValidEntry = False
End If
'Вызвать наш базовый класс и сообщить всем объектам, которых это может
'интересовать, что текст изменился
MyBase.OnTextChanged(e)
'Заметьте, что сейчас мы покидаем наш код и хотим отключить
'проверку повторных вхождений в него.
m_in_OnChangeFunction = False
End Sub
Protected Overrides Sub OnKeyPress( _
ByVal e As System.Windows.Forms.KeyPressEventArgs)
'Поскольку нам известно, что никакие буквы при вводе нам не нужны,
'то просто игнорировать их, если они встречаются.
Dim keyPressed As Char = e.KeyChar
If (System.Char.IsLetter(keyPressed)) Then
'Сообщить системе о том, что событие обработано
e.Handled = True
Return
End If
'Обработать нажатие клавиши обычным способом
MyBase.OnKeyPress(e)
End Sub
End Class
Листинг 13.4. Код формы для создания пользовательского элемента управления TextBox
'-----------------------------------------------------------------
'Переменная для хранения нашего нового элемента управления TextBox
'-----------------------------------------------------------------
Private m_filteredTextBox As SocialSecurityTextBox
'-----------------------------------------------------------------------
'ОБРАБОТЧИК СОБЫТИЙ: Создать экземпляр нашего пользовательского элемента
' управления и поместить его в форму
'-----------------------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'Создать, позиционировать и разместить элемент управления
m_filteredTextBox = New SocialSecurityTextBox
m_filteredTextBox.Bounds = _
New System.Drawing.Rectangle(2, 2, 160, 20)
'Подключить обработчик событий
AddHandler m_filteredTextBox.TextChanged, _
AddressOf Me.textBox_TextChanged
'Задать родительский объект
m_filteredTextBox.Parent = Me
'Выделить элемент управления
m_filteredTextBox.Focus
'Сделать данную кнопку недоступной, чтобы поверх данного объекта
'не был создан второй объект
SocialSecurityTextBox Button1.Enabled = False
End Sub
'----------------------------------------------------------------
'ОБРАБОТЧИК СОБЫТИЙ: Этот обработчик подключается динамически при
' создании элемента управления
'----------------------------------------------------------------
Private Sub textBox_TextChanged(ByVal sender As Object, _
ByVal e As System.EventArgs)
If (m_filteredTextBox.IsFullValidInput = True) Then
label1.Text = "FULL SOCIAL SECURITY NUMBER!!!"
Else
Label1.Text = "Not full input yet..."
End If
End Sub
Листинг 13.5. код формы, демонстрирующий использование прозрачности '