Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

If (m_sb.Length > SSNumberLength) Then

m_sb.Length = SSNumberLength

End If

'Возвратить новую строку

Return m_sb.ToString

End Function

Private m_in_OnChangeFunction As Boolean

Protected Overrides Sub OnTextChanged(ByVal e As EventArgs)

'------------------------------------------------------------------

'Если мы изменим свойство .Text, то будет осуществлен повторный

'вход в обработчик. В этом случае мы не хотим предпринимать никаких

'действий и должны просто выйти из функции без передачи события

'куда-то еще.

'------------------------------------------------------------------

If (m_in_OnChangeFunction = True) Then

Return

End If

'Заметьте, что сейчас мы находимся в функции OnChanged,

'поэтому мы можем обнаружить повторное вхождение (см. код выше)

m_in_OnChangeFunction = True

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

  • Читать дальше
  • 1
  • ...
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: