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

Допустить в TextBox наличие только одной запятой

25.09.2014, 20:23. Показов 8193. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть textbox и нужно, чтобы помимо прочих символов только одна запятая могла в нем быть.
не пойму в чем ошибка

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void button8_Click(object sender, EventArgs e)
        {//десятичный разделитель
            if (textBox1.Text != "")
            {
                int len = textBox1.Text.Length;
                for (int i = 0; i < len; i++)
                {
                    if (textBox1.Text[i] != ',')
                    {
                        textBox1.Text += ",";
                        break;
                    }
                    
                }
            }
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2014, 20:23
Ответы с готовыми решениями:

Допустить ввод в textBox только цифр
Добрый день! Как сделать фильтрацию в textBox, что бы можно было вводить только два числа разделены двоеточием. Соответственно в него можно...

Ввод в поле TextBox :цифр,одной запятой и трех цифр после запятой
Добрый день. На форме размещен TextBox в который разрешен ввод :цифр ,запятая. У меня вопрос как запретить :ввод второй запятой и разрешить...

Допустить в textBox ввод только 1-31 и символа "?"
Как сделать так чтобы в textBox можно было пользователю ввсести числа от 1-31, ввод других чисел запретить. А так же чтобы можно было...

10
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
25.09.2014, 21:02
Вот обработчик событий KeyPress для textbox:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '.')
                e.KeyChar = ','; //замена точки на запятую
            if (e.KeyChar==',')
            {
                if (((sender as TextBox).Text.IndexOf(',')!=-1) //запятая уже есть
                    || (sender as TextBox).Text.Length==0) //число не введено
                    e.Handled=true;
                return;
            }
        }
0
0 / 0 / 1
Регистрация: 11.10.2012
Сообщений: 133
25.09.2014, 22:22  [ТС]
а если ввод не с клавиатуры, а с формы?
0
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
25.09.2014, 22:52
Можете привести пример того, что содержится в textbox? Я не понял, что вы хотели сделать кодом из первого сообщения...
1
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
25.09.2014, 23:00
C#
1
2
3
4
5
if (textBox1.Text[i] != ',')
                    {
                        textBox1.Text += ",";
                        break;
                    }
эта часть кода означает
если символ не является запятой поставить запятую в конец строки и выйти из цикла. Совсем не то что вам нужно как мне кажется.

Код зависит от того что нужно сделать с информацией.
Удалить любе количество запятых можно найдя их с помощью .IndexOf(',', Int32) подставляя в цикле вместо Int32 номер предыдущей запятой. Этот способ лучше перебора символов тем что цикл выполнится столько раз сколько запятых, а не сколько символов.
0
0 / 0 / 1
Регистрация: 11.10.2012
Сообщений: 133
25.09.2014, 23:11  [ТС]
там числа, например: 4,245. сейчас можно ввести и вот такое число: 4,5,147,96,4. нужно ограничить допустимое количества запятых

Добавлено через 8 минут
мне не нужно удалять. мне нужно, чтобы при нажатии кнопки добавлялась запятая, если ее еще не в textbox.
0
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
25.09.2014, 23:32
Может будет проще прикрепить проект на форуме, я все равно не понял, куда должна добавляться запятая и каким образом вводятся данные в textbox
0
0 / 0 / 1
Регистрация: 11.10.2012
Сообщений: 133
25.09.2014, 23:38  [ТС]
прикрепить проект? вот тут я вас не понял(

есть textbox, туда вводим число, которое может быть дробным. вводим данные (цифры) с формы, а не с клавиатуры.
подробнее:
по нажатию кнопки на форме, проверяем textbox на наличие в нем запятой и добавляем запятую, если она там не найдена
0
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
25.09.2014, 23:43
Хотелось бы увидеть вашу программу, может даже скриншота будет достаточно.
Запятую добавлять в конец textbox'a?
0
0 / 0 / 1
Регистрация: 11.10.2012
Сообщений: 133
25.09.2014, 23:52  [ТС]
да, запятую в конец

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        bool Handled = false;
        bool bClearBox = false;
        double a, b, c;
        char znak = '+';
 
        private void button4_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                a = Convert.ToDouble(textBox1.Text);
                znak = (sender as Button).Text[0];
                textBox1.Tag = textBox1.Text;
                textBox1.Clear();
            }
        }
 
        private void button14_Click(object sender, EventArgs e)
        {
            if (bClearBox)
            {
                bClearBox = false;
                textBox1.Text = "";
                textBox1.Tag = "";
            }
            textBox1.Text += (sender as Button).Text;
        }
 
        private void button20_Click(object sender, EventArgs e)
        {//очищение поля
            textBox1.Text = "";
            textBox1.Tag = "";
        }
        private void button21_Click(object sender, EventArgs e)
        {//плюс-минус
            if (textBox1.Text != "")
                if (textBox1.Text[0] == '-')
                    textBox1.Text = textBox1.Text.Remove(0, 1);
                else textBox1.Text = '-' + textBox1.Text;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                bClearBox = true;
                double k;
                k = Convert.ToDouble(textBox1.Text);
                textBox1.Text = Convert.ToString(Math.Sqrt(k));
            }
            else
            {
                return;   
            }
        }
 
 
        private void button6_Click(object sender, EventArgs e)
        {
            bClearBox = true;
            b = Convert.ToDouble(textBox1.Text);
            switch(znak)
            {
                case '+':c = a + b;
                    break;
                case '-': c = a - b;
                    break;
                case '×': c = a * b;
                    break;
                case '/': c = a / b;
                    break;
            }
            textBox1.Text = Convert.ToString(c);
        }
 
        private void button8_Click(object sender, EventArgs e)
        {//десятичный разделитель
            if (textBox1.Text != "")
            {
                int len = textBox1.Text.Length;
                //MessageBox.Show (Convert.ToString(textBox1.Text.Length));
                for (int i = 0; i < len; i++)
                {
                    if (textBox1.Text[i] != ',')
                    {
                        textBox1.Text += ",";
                        break;
                    }
                    
                }
            }
        }
Миниатюры
Допустить в TextBox наличие только одной запятой  
0
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
26.09.2014, 18:20
Лучший ответ Сообщение было отмечено maksim94 как решение

Решение

C#
1
2
3
4
5
6
7
8
private void button8_Click(object sender, EventArgs e)
{
  if (textBox1.Text.Length == 0) //если запятая вставлена первой, то добавляем спереди 0
     textBox1.Text += "0,"; 
  else
      if (textBox1.Text.IndexOf(',') == -1) //если запятая еще не стоит,
         textBox1.Text += ","; //ставим
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2014, 18:20
Помогаю со студенческими работами здесь

Ограничение одной запятой в textBox
Я делаю калькулятор, мне надо в textBox дописать запятую, я это делаю так textBoxInput.Text += &quot;,&quot;; Запятую можно...

Вводить в TextBox вещественное число с одной запятой
Здравствуйте, как сделать так, чтобы в TextBox можно было ввести числа, которые содержат только одну запятую? Т.е. чтобы не было таких...

Ввод только 1 запятой в TextBox
Вопрос,что здесь допилить,чтобы разрешалось вводить только 1 запятую,а при попытке ввода второй,она даже не отображалась в текстбоксе? ...

Как запретить ввод в textbox больше одной запятой?
Здравствуйте! Я делал калькулятор на паскале в WinForms и столкнулся с проблемой, что в textbox можно ввести несколько запятых, что ломает...

Ввод в textBox только цифр и запятой
Использую такой код: Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru