Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 20

Автоматическое форматирование в textBox

13.05.2017, 10:15. Показов 5680. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Мучаюсь этим вопросом уже долгое время.

В textBox вводится некоторое число максимальной длиной до 12 цифр. При вводе число автоматически разделяется на группы (вместо "1234567" - "1 234 567"), при этом разделителем является пробел.

Пробовал через switch (вставлял и удалял пробелы в зависимости от длины числа). Есть несколько проблем:
  1. При замене значения textBox.Text "курсор" смещается в начало. Придется запоминать положение курсора, а после замены возвращать в необходимое место?
  2. Если необходимо "стереть" несколько цифр, то что делать с пробелом? Либо удалять и пробел и цифру перед ним, либо восстанавливать его ("стерли" пробел, отпустили backspace, пробел снова восстановился [чтобы "стирать" нужно держать backspace долго]).

Пробовал через String.Format ("{0:N0}", textBox.Text):
  1. Опять же проблема со смещением курсора.
  2. Некорректная работа при событии KeyPress (срабатывает только после ввода второго символа).

Интуиция подсказывает, что есть очень простое решение. Постарался описать подробно, надеюсь на помощь. Если что-то не понятно - спрашивайте!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2017, 10:15
Ответы с готовыми решениями:

Форматирование текста в TextBox
Помогите, вот есть textbox со включенным multiline, вот надо сделать что бы текст в нем форматировался и выглядел как код, то есть...

Форматирование текста в textBox
Скажите как лучше сделать. Имеется TextBox с ограничением длины 10 символов. пользователь вводит телефон в формате 9998881122, как сделать...

форматирование текста в Textbox (multiline)
Добрый день! Решил реализовать вывод логов в textbox из .log файла на сервере по ssh. Вывожу через команду tail. Как это можно исправить?...

10
15 / 15 / 12
Регистрация: 10.10.2015
Сообщений: 68
13.05.2017, 11:19
Я бы сделал так
C#
1
2
3
4
5
6
private void textBox1_TextChanged(object sender, EventArgs e)
{
      var doub = double.Parse(textBox1.Text);
      textBox1.Text = doub.ToString("N0", CultureInfo.CreateSpecificCulture("ru-RU"));
      textBox1.SelectionStart = textBox1.Text.Length;
}
textBox1.MaxLength = 15 и проверку на введенный символ - число (чтобы не ловить exception у Parse)
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 20
13.05.2017, 13:57  [ТС]
Сделал следующим образом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8)
    {
        e.Handled = true;
    }
}
 
private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (textBox1.TextLength > 0)
    {
        var doub = double.Parse(textBox1.Text);
        textBox1.Text = doub.ToString("N0", CultureInfo.CreateSpecificCulture("ru-RU"));
        textBox1.SelectionStart = textBox1.Text.Length;
    }
}
В принципе, всё хорошо. Осталось сделать так, чтобы курсор оставался в необходимом месте, а не перемещался в конец.

Добавлено через 7 минут
А ещё стирание работает не корректно. Если стирать из середины, то один символ стирается, а затем курсор перемещается вправо, и стирание продолжается уже оттуда.
0
Special user
36 / 36 / 16
Регистрация: 07.10.2013
Сообщений: 121
13.05.2017, 15:43
Посмотрите в сторону MaskedTextBox:
https://msdn.microsoft.com/ru-... .110).aspx
https://msdn.microsoft.com/ru-... .110).aspx
https://msdn.microsoft.com/ru-... .110).aspx
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
13.05.2017, 23:22
1. Маска
2. А у вас только интовое число, или может быть float?
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 20
13.05.2017, 23:45  [ТС]
Маска работает иначе, чем мне бы хотелось. Число целое.
0
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,136
Записей в блоге: 1
14.05.2017, 22:22
Zerrox, вам обязательно использовать текстбокс для чисел? Есть элемент управления NumericUpDown, он умеет показывать числа с разделителем разрядов, можно допилить, чтоб "на лету" форматировал вводимое пользователем.
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 20
15.05.2017, 15:47  [ТС]
NewOrdered, textBox не обязателен. Подойдёт любое поле, в которое можно вводить текст, но у NumericUpDown рядом с полем есть совсем не нужные стрелочки "вверх\вниз". Да и добавить пробелы не самое сложное. Как оставлять указатель ввода в том же положении, чтобы можно было продолжить ввод в необходимом месте (в начале, в середине или в конце)...
0
15.05.2017, 16:56

Не по теме:

Цитата Сообщение от Zerrox Посмотреть сообщение
но у NumericUpDown рядом с полем есть совсем не нужные стрелочки "вверх\вниз"
да, из-за такой проблемы не грех и велосипед изобрести

0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
15.05.2017, 17:30
Цитата Сообщение от Zerrox Посмотреть сообщение
у NumericUpDown рядом с полем есть совсем не нужные стрелочки "вверх\вниз"
Чтобы их убрать в обработчик события Load формы добавьте
C#
1
numericUpDown1.Controls[0].Visible = false;
1
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,136
Записей в блоге: 1
15.05.2017, 18:09
Даценд, Zerrox, действительно убираются стрелочки. Только вот пустое место от них не заполняется цифрами, да и при отключении контрола это место остается незатененным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2017, 18:09
Помогаю со студенческими работами здесь

Нужно форматирование текста в TextBox
Делаю простой текстовый редактор и мне нужно, чтобы при нажатии на элемент в ToolStrip, например жирный, то следующий текст, который...

Форматирование текста у TextBox в режиме MultiLine?
Здравствуйте, подскажите можно ли TextBox в режиме MultiLine подчеркивать, делать жирным, курсивом, цветом? Если да то как?

Форматирование вывода двухмерного массива в textbox
Уважаемые форумчане, выручайте. В цикле выводятся значения из массивов time и fsy, в textbox10. Выводятся не красиво и не удобно. В массиве...

Автоматическое выделение textbox
Как убрать автоматическое выделение?

Для компонента TextBox (Multiline=True) выполнить форматирование текста
Для компонента TextBox (Multiline=True) выполнить форматирование текста: - задание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru