Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/68: Рейтинг темы: голосов - 68, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 42

Ввод в текстовое поле только цифр

30.04.2012, 23:51. Показов 13676. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые обитатели. Как можно сделать, что б в текстовом поле, можно было вводить только цифры? Причем только двузначное число.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2012, 23:51
Ответы с готовыми решениями:

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

Запретить ввод в текстовое поле определенных символов
Всем доброго дня еще раз. Как запретить ввод в текстовое всего, кроме цифр и не более 2х точек

Копировать в текстовое поле только числа и запятые\точки?
Есть программа, в которой есть пользовательское поле TextBox в которое необходимо копировать только числовое значение, целое или дробное....

39
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.05.2012, 19:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CAH9I_3HAUKO Посмотреть сообщение
что когда нажал Ентер, то переходишь в другое поле
в той процедуре написать:
VB.NET
1
Контролл.Focus()
В качестве контролла это может быть следующий МаскедТекстБокс или другой компонент.
0
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 42
01.05.2012, 22:16  [ТС]
Памирыч, Да это я знал.
0
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 42
20.05.2012, 17:23  [ТС]
Памирыч, Привет. У меня проблема с этим полем. Короче, когда я ввожу данные, нажимаю Ентер. Они обрабатываются, фокус перескакивает на другое поле. Но когда, я перехожу опять в то поле. Ставлю курсор справа от существующей в нем цифры(которую я ввел ранее), то могу опять ввести цифру. Уже вторую, хотя в свойствах можно вводить только одну. На расчеты это не влияет, но в поле она есть.
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.05.2012, 20:41
CAH9I_3HAUKO, у текстового поля есть свойство MaxLength
0
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 42
20.05.2012, 22:56  [ТС]
Памирыч, Тогда такой вопрос, как можно вводить в Textbox только цифры? Маскед текст бокс не в счет.
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
20.05.2012, 23:17
VB.NET
1
2
3
4
5
6
7
8
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If Asc(e.KeyChar) <> 8 Then
            If Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57 Then
            Else
                e.Handled = True
            End If
        End If
    End Sub
Добавлено через 7 минут
Вот так по короче будет:
VB.NET
1
2
3
4
5
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 Then
            e.Handled = True
        End If
    End Sub
0
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
23.05.2012, 14:39
ZuMiks, а можно подобным образом сделать ввод не только цифр, но и знака "-" перед числовым значением; точку и запятую, при этом если вводится точка, то она должна заменяться на десятичный разделитель...
Можно ли такое добавить в код? и если можно то как?
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
23.05.2012, 17:48
Цитата Сообщение от Divil Посмотреть сообщение
ZuMiks, а можно подобным образом сделать ввод не только цифр, но и знака "-" перед числовым значением; точку и запятую, при этом если вводится точка, то она должна заменяться на десятичный разделитель...
Можно ли такое добавить в код? и если можно то как?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If TextBox1.Text = "" Then
            If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 And e.KeyChar <> "-" And Asc(e.KeyChar) <> 44 And Asc(e.KeyChar) <> 46 Then
                e.Handled = True
            End If
        Else
            If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 And Asc(e.KeyChar) <> 44 And Asc(e.KeyChar) <> 46 Then
                e.Handled = True
            End If
        End If
    End Sub
 
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        TextBox1.Text = (TextBox1.Text.Replace(".", ","))
    End Sub
0
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
23.05.2012, 18:29
Спасибо огромное!
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
23.05.2012, 23:49
Divil, в процедуру TextBox1_KeyPress в самый конец добавь этот код
VB.NET
1
2
3
4
5
        If InStr(TextBox1.Text, ",") Then
            If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 Then
                e.Handled = True
            End If
        End If
Так как разделитель можно ввести только один раз.
1
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
27.05.2012, 16:49
все работает замечательно, только заметил что после ввода десятичный разделитель, ввод данных переходит на начало строки(фокус печатающей палочки переходит на начало строки(не помню как это называется)), т.е. я не могу после десятичного разделителя сразу вводить десятичное значение...а нужно мышкой или стрелками переключиться на конец...
ну как так...
и знак минус можно ввести только до ввода числа...после нельзя
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
27.05.2012, 22:22
В событие "TextBox1_TextChanged" добавь строчку
VB.NET
1
TextBox1.SelectionStart = TextBox1.Text.Length
А на счет знака минус ориентировался на это:
Цитата Сообщение от Divil Посмотреть сообщение
и знака "-" перед числовым значением
и вот перед числом вести можно, а в середине и в конце числа нельзя, думал так надо.
1
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
27.05.2012, 22:30
насчет минуса, я не в том смысле что в середине или вконце его писать....
суть проблемы такова: допустим я ввел число положительное...а оно оказалось отрицательным..т.е. нужно дописать минус..и в этот момент я минус ввести не могу почему-то...перед ввод числового значения могу, а после того как ввел нет. вот в чем проблема.
за первый ответ спасибо!)))
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
28.05.2012, 15:22
Вот полностью код все исправленно:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If TextBox1.SelectionStart = 0 Then
            If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 And e.KeyChar <> "-" And Asc(e.KeyChar) <> 44 And Asc(e.KeyChar) <> 46 Then
                e.Handled = True
            End If
        Else
            If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 And Asc(e.KeyChar) <> 44 And Asc(e.KeyChar) <> 46 Then
                e.Handled = True
            End If
        End If
        If InStr(TextBox1.Text, ",") Then
            If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 And e.KeyChar <> "-" Then
                e.Handled = True
            End If
        End If
 
    End Sub
 
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        TextBox1.Text = (TextBox1.Text.Replace(".", ","))
        TextBox1.SelectionStart = TextBox1.Text.Length
    End Sub
1
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
28.05.2012, 16:15
спасибо огромное помогло!
0
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
30.05.2012, 21:43
еще такой вопрос:
при нажатии кнопки вводится десятичный разделитель(,)
вот мой код:
VB.NET
1
2
3
4
5
6
Private Sub Button20_Click(sender As System.Object, e As System.EventArgs) Handles Button20.Click
        Dim разделитель As Boolean
        If разделитель = True Then
            TextBox1.Text = Str(TextBox1.Text) + ","
        End If
    End Sub
проблема в том что я не знаю как сделать так, чтоб его можно было вводить только 1 раз!
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
30.05.2012, 22:11
Сделай проверку на наличие запятой в тексте. если в водимом тексте есть знак препинания (Char.IsPunctuation) то знак не печатать.

VB.NET
1
2
3
If Not Char.IsPunctuation(e.KeyChar)  Then
                e.Handled = True
            End If
Код не проверял, возьми за основу и подредактируй
0
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
01.06.2012, 16:08
kOS_77, так в том то и дело я не знаю как сделать эту проверку! знал бы не писал сюда
впринципе
VB.NET
1
2
3
If Not Char.IsPunctuation(e.KeyChar)  Then
                e.Handled = True
            End If
этот код я понял, но функция Char.IsPunctuation() на сам текст не действует что-то...((
она похоже реагирует на нажатую кнопку....да и работает она на KeyPress....
тут у меня назрел другой вопрос: вот в паскале можно же с помощью For...to... брать каждый символ и проверять что-то наподобии массива...вот

Pascal
1
2
3
4
5
k=0
for i=1 to length(s)
if s[i]="," then
k=k+1
if k=1 then s=s+","
а можно ли так сделать на vb.net? и если да то как?
заранее благодарен
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
01.06.2012, 20:35
Вот надеюсь я правильно понял
VB.NET
1
2
3
4
5
6
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i = 0 To TextBox1.Text.Length - 1
            If TextBox1.Text(i) = "," Then Exit Sub
        Next
        TextBox1.Text &= ","
    End Sub
1
8 / 8 / 10
Регистрация: 11.04.2012
Сообщений: 611
01.06.2012, 22:49
ZuMiks, все правильно огромное спасибо!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2012, 22:49

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

Ввод в TextBox только цифр
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Добрый день! Мне нужно, что бы...

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

Ввод только цифр и точки в TextBox
Здравствуйте. Имеется TextBox куда нужно вводить информацию, но нужно сделать так что бы можно вводить было только цифры (0-9) и...

Активное текстовое поле
Подскажите, как сделать так, чтобы textbox был постоянно активен?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru