Чтение онлайн

на главную - закладки

Жанры

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

Салмре Иво

Шрифт:

'Форматировать поступающий текст с целью установления его соответствия

'нужному формату:

'

' Формат номера карточки социального страхования: ###-##-####

' символы: 01234567890

'

' [in] inString : Текст, который мы хотим форматировать

' [in/out] selectionStart: Текущая точка вставки в тексте;

' она будет смещаться в связи с удалением

' и добавлением нами символов

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

Private Function formatText_NNN_NN_NNNN(ByVal inString As _

 String, ByRef selectionStart As Integer) As String

 Const firstDashIndex As Integer = 3

 Const secondDashIndex As Integer = 6

 'Удалить старые данные и поместить входную строку

 'в объект StringBuilder, чтобы мы могли с ней работать.

 m_sb.Length = 0

 m_sb.Append(inString)

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

 'Просмотреть каждый символ в строке, пока не будет

 'достигнута максимальная длина нашего форматированного текста

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

 Dim currentCharIndex As Integer

 currentCharIndex = 0

 While ((currentCharIndex < m_sb.Length) AndAlso _

(currentCharIndex < SSNumberLength))

Dim currentChar As Char

currentChar = m_sb(currentCharIndex)

If ((currentCharIndex = firstDashIndex) OrElse _

(currentCharIndex = secondDashIndex)) Then

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

'The character needs to be a "-"

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

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

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

Кодекс Охотника. Книга III

Винокуров Юрий
3. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Кодекс Охотника. Книга III

Геном хищника. Книга пятая

Гарцевич Евгений Александрович
5. Я - Легенда!
Фантастика:
рпг
фэнтези
попаданцы
6.00
рейтинг книги
Геном хищника. Книга пятая

Неучтенный элемент. Том 3

NikL
3. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 3

Монстр из прошлого тысячелетия

Еслер Андрей
5. Соприкосновение миров
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Монстр из прошлого тысячелетия

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри

Запечатанный во тьме. Том 2

NikL
2. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 2

На границе империй. Том 10. Часть 7

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 7

Журнал «Если», 2002 № 08

Андерсон Кевин Джей
114. Журнал Если
Фантастика:
научная фантастика
5.00
рейтинг книги
Журнал «Если», 2002 № 08

Ким

Киплинг Редьярд Джозеф
Приключения:
исторические приключения
7.62
рейтинг книги
Ким

Криптозой

Головачев Василий Васильевич
Фантастика:
научная фантастика
6.25
рейтинг книги
Криптозой

Оживший камень

Кас Маркус
1. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Оживший камень

Ваше Сиятельство 7

Моури Эрли
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Ваше Сиятельство 7

Уникум

Поселягин Владимир Геннадьевич
1. Уникум
Фантастика:
альтернативная история
4.60
рейтинг книги
Уникум