Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 577


> 'Получить текущее свойство .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