Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
m_sb.Remove(currentCharIndex, 1);
//Если мы добавили символ перед точкой вставки,
//она должна быть смещена назад
if (currentCharIndex < selectionStart) {
selectionStart--;
}
//He увеличивать значение счетчика символов, ибо мы должны
//просмотреть символ, занявший место того символа,
//который мы удалили
} else {
//Символ является цифрой, все нормально.
currentCharIndex++;
}
}
}
//Если превышена длина строки, усечь ее
if (m_sb.Length > SSNumberLength) {
m_sb.Length = SSNumberLength;
}
//Возвратить новую строку
return m_sb.ToString;
}
bool m_in_OnChangeFunction;
protected override void OnTextChanged(EventArgs e) {
//------------------------------------------------------------------
//Если мы изменим свойство .Text, то будет осуществлен повторный
//вход в обработчик. В этом случае мы не хотим предпринимать никаких
//действий и должны просто выйти из функции без передачи события
//куда-то еще.
//------------------------------------------------------------------
if (m_in_OnChangeFunction == true) {
return;
}
//Заметьте, что сейчас мы находимся в функции OnChanged,
//поэтому мы можем обнаружить повторное вхождение (см. код выше)
m_in_OnChangeFunction = true;
//Получить текущее свойство .Text
string oldText = this.Text;
//Получить текущий индекс
SelectionStart int selectionStart = this.SelectionStart;
//Форматировать строку, чтобы она удовлетворяла нашим потребностям
string newText = formatText_NNN_NN_NNNN(oldText, ref selectionStart);
//Если текст отличается от исходного, обновить
//свойство .Text
if (System.String.Compare(oldText, newText) != 0) {
//Это приведет к повторному вхождению
this.Text = newText;
//Обновить местоположение точки вставки
this.SelectionStart = selectionStart;
}
//Мы принудительно обеспечили соответствие введенного текста
//правильному формату, поэтому, если длина строки согласуется с длиной
//номера карточки социального страхования, то мы знаем что она имеет
//формат ###-##-####.
if (this.Text.Length == SSNumberLength) {
//Да, мы имеем полный номер карточки социального страхования
m_inputIsFullValidEntry = true;
} else {
//Нет, мы пока не получили полный номер карточки социального страхования
m_inputIsFullValidEntry = false;
}
//Вызвать наш базовый класс и сообщить всем объектам, которых это
//может интересовать, что текст изменился
base.OnTextChanged(e);
//Заметьте, что сейчас мы покидаем наш код и хотим отключить
//проверку повторных вхождений в него.
m_in_OnChangeFunction = false;
}
protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e) {
//Поскольку нам известно, что никакие буквы при вводе нам не нужны,
//то просто игнорировать их, если они встречаются.
char keyPressed = e.KeyChar;
if (System.Char.IsLetter(keyPressed)) {
//Сообщить системе о том, что событие обработано
e.Handled =true;
return;
}
//Обработать нажатие клавиши обычным способом
base.OnKeyPress(e);
} //Конец функции
} //Конец класса
Листинг 13.4 Код формы для создания пользовательского элемента управления TextBox
//-----------------------------------------------------------------
//Переменная для хранения нашего нового элемента управления TextBox
//-----------------------------------------------------------------
SocialSecurityTextBox m_filteredTextBox;
Поделиться:
Популярные книги
Чужак из ниоткуда 2
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Наследие Маозари 4
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Деревенщина в Пекине 2
2. Пекин
Фантастика:
попаданцы
дорама
фантастика: прочее
5.00
рейтинг книги
Старый, но крепкий 3
3. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Вперед в прошлое 11
11. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный Маг Императора 19
19. Черный маг императора
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Мл. сержант. Назад в СССР. Книга 3
3. Второй шанс
Фантастика:
альтернативная история
6.40
рейтинг книги
Отмороженный 12.0
12. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
Воплощение Похоти
1. Воплощение Похоти
Фантастика:
юмористическое фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Убивать чтобы жить 6
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Имперец. Том 5
4. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Чайлдфри
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Вперед в прошлое 9
9. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Бастард Императора. Том 3
3. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00