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

Салмре Иво

Шрифт:

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

If (currentChar <> "-"c) Then 'Вставить дефис

m_sb.Insert(currentCharIndex, "-")

'Если мы добавили символ перед точкой вставки,

'она должна быть смещена вперед

If (currentCharIndex <= selectionStart) Then

selectionStart = selectionStart + 1

End If

End If

'Этот символ годится, перейти к следующему символу

currentCharIndex = currentCharIndex + 1

Else

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

'Символ должен быть цифрой

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

If (System.Char.IsDigit(currentChar) = False) Then

'Удалить символ

m_sb.Remove(currentCharIndex, 1)

'Если мы добавили символ перед точкой вставки,

'она должна быть смещена назад

If (currentCharIndex < selectionStart) Then

selectionStart = selectionStart - 1

End If

'He увеличивать значение счетчика символов, ибо мы должны

'просмотреть символ, занявший место того символа,

'который мы удалили

Else

'Символ является цифрой, все нормально.

currentCharIndex = currentCharIndex + 1

End If

End If

 End While

 'Если превышена длина строки, усечь ее

 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

 'Мы принудительно обеспечили соответствие введенного текста правильному

 'формату, поэтому, если длина строки согласуется с длиной номера

 'карточки социального страхования, то мы знаем что он имеет

  • Читать дальше
  • 1
  • ...
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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