Рейтинг:
0
OriginalGriff
Чтобы добавить к тому, что предлагает Ричард, само форматирование не является сложным:
private string ToISBNFormat(string s)
{
StringBuilder result = new StringBuilder(13 + 4);
s = Regex.Replace(s, "-", "");
int len = s.Length;
if (len < 3) return s;
result.AppendFormat("{0}-", s.Substring(0, 3));
len -= 3;
if (len >= 1) result.AppendFormat("{0}-", s[3]);
len -= 1;
if (len > 0) result.AppendFormat("{0}-", s.Substring(4, Math.Min(2, len)));
len -= 2;
if (len > 0) result.AppendFormat("{0}-", s.Substring(6, Math.Min(6, len)));
len -= 6;
if (len > 0) result.Append(s.Substring(12, Math.Min(1, len)));
return result.ToString();
}
Возможно, Вам также придется поработать с позицией курсора: вы можете получить и установить ее с помощью свойства TextBox.SelectionStart
Primo Chalice
Итак, должен ли я использовать свойство SelectionStart в самом событии TextChanged? Потому что я пытался вызвать fucntion в событии TextChanged и даже использовал SelectionStart, но это не сработало.
OriginalGriff
Как вы его использовали? Я не вижу твоего экрана!
Primo Chalice
частная строка ToISBNFormat(строка s)
{
Результат StringBuilder = новый StringBuilder(13 + 4);
ы = регулярное выражение.Заменить(с, "-", "");
тип int лен = С. Длина;
if (len < 3) return s;
результат.AppendFormat("{0}-", s.Substring(0, 3));
лен -= 3;
если (len >= 1) результат.AppendFormat("{0}-", s[3]);
лен -= 1;
если (len > 0) результат.AppendFormat("{0}-", s.Substring(4, Math.Min(2, len)));
лен -= 2;
если (len > 0) результат.AppendFormat("{0}-", s.Substring(6, Math.Min(6, len)));
лен -= 6;
если (len > 0) результат.Добавить(С. Подстрока(12, Математика.Мин(1, лен)));
возвращаемый результат.Метод toString();
}
частная txt_BookISBN_TextChanged недействительным(объект отправителя, EventArgs в электронной)
{
ToISBNFormat(txt_BookISBN.Text);
txt_BookISBN.Сосредоточить();
}
OriginalGriff
Когда вы начинаете задавать вопросы о сложных предметах линейного пользовательского ввода шаблонов, мы склонны предполагать, что вы знаете основы.
Что ваш код делает с результатом, который возвращает функция?
Primo Chalice
Судя по вашим словам, я считаю, что совершил глупую ошибку или промах. Прошу прощения, если я вас чем-то рассердил. Но я серьезно не собирался этого делать.
В принципе, код ничего не делает. Вход такой же, как и раньше. Обычный текст. Никакого форматирования.
OriginalGriff
"Глупая ошибка" - О да!
Это основной материал - если вы не используете значение, возвращаемое методом, то оно выбрасывается. Таким образом, вызов метода для переформатирования входной строки, а затем игнорирование его возвращаемого значения - переформатированной строки - ничего не сделает с вашей программой ...