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

Салмре Иво

Шрифт:

char currentChar;

currentChar = m_sb[currentCharIndex];

if ((currentCharIndex == firstDashIndex) || (currentCharIndex == secondDashIndex))

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

//Данным символом должен быть "-"

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

{

if (currentChar != '-') {

//Вставить дефис

m_sb.Insert(currentCharIndex, "-");

//Если мы добавили символ перед точкой вставки,

//она должна быть смещена вперед

if (currentCharIndex <= selectionStart) {

selectionStart++;

}

}

//Этот символ годится, перейти к следующему символу

currentCharIndex++;

} else

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

//Символ должен быть цифрой

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

{

if (System.Char.IsDigit(currentChar) == false) {

//Удалить символ

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;

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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