> 'Получить текущее свойство .Text
> Dim oldText As String = Me.Text
> 'Получить текущий индекс SelectionStart
> Dim selectionStart As Integer = Me.SelectionStart
> 'Форматировать строку, чтобы она удовлетворяла нашим потребностям
> Dim newText As String = formatText_NNN_NN_NNNN(oldText, _
> selectionStart)
> 'Если текст отличается от исходного, обновить
> 'свойство .Text
> If (oldText <> newText) Then
> 'Это приведет к повторному вхождению
> Me.Text = newText
> 'Обновить местоположение точки вставки
> Me.SelectionStart = selectionStart
> End If
> 'Мы принудительно обеспечили соответствие введенного текста правильному
> 'формату, поэтому, если длина строки согласуется с длиной номера
> 'карточки социального страхования, то мы знаем что он имеет
> 'формат ###-##-####.
> 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