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

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

Жанры

Программирование мобильных устройств на платформе .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;

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

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

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

Сильнейший Столп Империи. Книга 1

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

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Двойник Короля

Скабер Артемий
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля

Я до сих пор не князь. Книга XVI

Дрейк Сириус
16. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я до сих пор не князь. Книга XVI

Старая школа рул

Ромов Дмитрий
1. Второгодка
Фантастика:
альтернативная история
6.00
рейтинг книги
Старая школа рул

Гримуар темного лорда VII

Грехов Тимофей
7. Гримуар темного лорда
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда VII

Третий. Том 6

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

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

Зайти и выйти

Суконкин Алексей
Проза:
военная проза
5.00
рейтинг книги
Зайти и выйти

Двойник Короля 8

Скабер Артемий
8. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 8

И.Бабель. Воспоминания современников

Паустовский Константин Георгиевич
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
И.Бабель. Воспоминания современников

Я не князь. Книга XIII

Дрейк Сириус
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я не князь. Книга XIII

Технарь

Муравьёв Константин Николаевич
1. Технарь
Фантастика:
космическая фантастика
попаданцы
7.13
рейтинг книги
Технарь