> 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