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

Салмре Иво

Шрифт:

Данный пример легко видоизменить для поддержки других форматов ввода. Кроме того, в него может быть добавлен код, поддерживающий пользовательские события; например, наш унаследованный элемент управления TextBox может возбуждать событие после ввода всех необходимых данных, согласующихся с шаблоном ввода.

Листинг 13.3. Фильтрующее текстовое окно, принимающее текст в формате ###-##-####

using System;

//----------------------------------------------------------------------

//Этот класс является элементом управления, производным от TextBox.

//Он наследует все графические свойства TextBox, но добавляет фильтрацию

//содержимого текстового окна, тем самым гарантируя,

//что вводимый текст будет соответствовать следующему формату:

//###-##-####.

//Этот формат соответствует формату номеров карточек социального

//страхования, которые используются в США.

//----------------------------------------------------------------------

public class SocialSecurityTextBox: System.Windows.Forms.TextBox {

private bool m_inputIsFullValidEntry;

//------------------------------------

//Указывает, получен ли номер карточки

//социального страхования полностью

//------------------------------------

public bool IsFullValidInput {

get {return m_inputIsFullValidEntry;}

}

//Объект StringBuilder, который мы будем часто использовать

System.Text.StringBuilder m_sb;

//Максимальная длина обрабатываемых строк

const int SSNumberLength = 11;

//-----------

//Конструктор

//-----------

public SocialSecurityTextBox {

//Распределить память для нашего объекта StringBuilder и предоставить

//место для нескольких дополнительных рабочих символов по умолчанию

m_sb = new System.Text.StringBuilder(SSNumberLength + 5);

m_inputIsFullValidEntry = false;

}

//---------------------------------------------------------------------

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

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

//

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

// символы: 01234567890

//

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

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

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

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

//----------------------------------------------------------------------

private string formatText_NNN_NN_NNNN(string inString, ref int selectionStart) {

const int firstDashIndex = 3;

const int secondDashIndex = 6;

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

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

m_sb.Length = 0;

m_sb.Append(inString);

//------------------------------------------------------------

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

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

//------------------------------------------------------------

int currentCharIndex;

currentCharIndex = 0;

while ((currentCharIndex < m_sb.Length) && (currentCharIndex < SSNumberLength)) {

  • Читать дальше
  • 1
  • ...
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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