0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68

Контроль корректности ввода числа в TextBox

25.01.2013, 07:53. Показов 7359. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Напишите, пожалуйста, код для проверки элемента textbox на число.
Если этот элемент не является числом, то программа должна выдавать предупреждение!
Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2013, 07:53
Ответы с готовыми решениями:

Контроль корректности ввода числа
В консоли в поле (Enter The Yar: )вводя нужно вводить только цифры, если ввести случайно букву то на экране консоли мерцает (Enter The Yar:...

Контроль корректности ввода возраста в консольном приложении
Помогите пожалуйста с задачкой: Постройте консольное приложение, в котором вводится возраст пользователя. Возраст должен отвечать...

TextBox контроль ввода
Здравствуйте. Подскажите пожалуйста, как сделать, чтобы при вводе пользователем некорректного выражения появлялось окно с ошибкой. Т.е....

20
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
25.01.2013, 08:55
В простейшем виде так
Visual Basic
1
2
3
If Not IsNumeric(Text1.Text) Then
      MsgBox "Не число"
      End If
А если нужен контроль ввода с исправлением, то так можно
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Text1_Change()
On Error Resume Next
        With Text1
           If Not IsNumeric(.Text) Then
            'MsgBox "Не число" ' это лучше убрать, а то раздражает
            .Text = Left(.Text, .SelStart - 1) & Mid(.Text, 1 + .SelStart)
            End If
        End With
End Sub
2
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
25.01.2013, 08:57  [ТС]
Спасибо большое!
Второй вариант устраивает на 100%!!!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
25.01.2013, 10:33
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от misha-sx Посмотреть сообщение
Второй вариант устраивает на 100%!!!
- но не думаю, что устроит пользователей... Я промахнулся, нажал не ту клавишу - и все стерлось! Так не делают. Представьте себе, что я ввожу 15 -20 разрядное число и ошибся в последнем разряде. Все перебивать?
2
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
25.01.2013, 10:39  [ТС]
Замечание правильное. Но, что делать?
Допустим, что ошиблись на третьем символе... и что?
Как я понял, вы предлагаете устранять саму ошибку, а не весь элемент.
Не подскажите как это сделать?
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
25.01.2013, 10:40
Цитата Сообщение от Catstail Посмотреть сообщение
нажал не ту клавишу - и все стерлось!
Да не, не тот случай!
Единственно добавить сохранение позиции курсора при неверном вводе
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Text1_Change()
On Error Resume Next
        With Text1
           If Not IsNumeric(.Text) Then
            'MsgBox "Íå ÷èñëî" ' ýòî ëó÷øå óáðàòü, à òî ðàçäðàæàåò
            ss = .SelStart
            .Text = Left(.Text, .SelStart - 1) & Mid(.Text, 1 + .SelStart)
            .SelStart = ss - 1
            End If
        End With
End Sub
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
25.01.2013, 10:45  [ТС]
Апострофф, интересный код. Вот только можно набрать " ", "+", "-". Желательно запретить и эти клавиши!
А так идея хорошая.
0
Заблокирован
25.01.2013, 11:08
Тогда там же в Text1_Change писать код запрета ввода определенных символов.
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
25.01.2013, 11:27
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim s$
s = Text1.Text
'Если   цифра              или  Backspace   или   минус в первой позиции
If IsNumeric(Chr(KeyAscii)) Or KeyAscii = 8 Or KeyAscii = 45 And Text1.SelStart = 0 Then
  'то ничего не делаем
ElseIf KeyAscii = 46 Or KeyAscii = 44 Then
  KeyAscii = 44 '44, 46 - запятая или точка, согласно национальным настройкам системы
  If InStr(s, Chr(KeyAscii)) > 1 Then KeyAscii = 0 'запрет повторения разделителя
  If Len(s) = 0 Then KeyAscii = 0 'запрет лидирующего разделителя
Else 'отменяем ввод
  KeyAscii = 0
End If
End Sub
2
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
25.01.2013, 11:39  [ТС]
Апострофф, код не работает!
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
25.01.2013, 11:44
misha-sx, а вы работаете не в VBA случаем?
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
25.01.2013, 11:46  [ТС]
нет, в VB.
Возможно я туплю...
Я вставляю в форму точно ваш код, оптимизируя его под свойство caption.
Прога просто не запускается
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
25.01.2013, 12:12
Цитата Сообщение от Catstail Посмотреть сообщение
нажал не ту клавишу - и все стерлось!
Этот код стирает у Вас всё при неверном символе?
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Text1_Change()
On Error Resume Next
        With Text1
           If Not IsNumeric(.Text) Then
            'MsgBox "Не число" ' это лучше убрать, а то раздражает
            .Text = Left(.Text, .SelStart - 1) & Mid(.Text, 1 + .SelStart)
            End If
        End With
End Sub
Странно. У меня просто не дает вводить НЕ число. Всё что было до этого остается на месте.
А вот знаки +- это да, пропускает.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
25.01.2013, 13:02
В VBA прекрасно работает:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim s$
    s = TextBox1.Text
    'Åñëè   öèôðà              èëè  Backspace   èëè   ìèíóñ â ïåðâîé ïîçèöèè
    If IsNumeric(Chr(KeyAscii)) Or KeyAscii = 8 Or KeyAscii = 45 And TextBox1.SelStart = 0 Then
  'òî íè÷åãî íå äåëàåì
    ElseIf KeyAscii = 46 Or KeyAscii = 44 Then
       KeyAscii = 44 '44, 46 - çàïÿòàÿ èëè òî÷êà, ñîãëàñíî íàöèîíàëüíûì íàñòðîéêàì ñèñòåìû
       If InStr(s, Chr(KeyAscii)) > 1 Then KeyAscii = 0 'çàïðåò ïîâòîðåíèÿ ðàçäåëèòåëÿ
       If Len(s) = 0 Then KeyAscii = 0 'çàïðåò ëèäèðóþùåãî ðàçäåëèòåëÿ
    Else 'îòìåíÿåì ââîä
       KeyAscii = 0
    End If
End Sub
Добавлено через 2 минуты
Имею в виду - прекрасно работает код, предложенный Апострофф-ом.
2
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
25.01.2013, 13:09  [ТС]
Согласен в VBA работает, а вот в VB не совсем работает.
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
25.01.2013, 13:25
Цитата Сообщение от misha-sx Посмотреть сообщение
в VB не совсем работает
misha-sx, выложи сюда свой проект - посмотрим...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,708
Записей в блоге: 14
25.01.2013, 13:26
Я проверил. Естественно, работает и в VB. Причем, абсолютно корректно (в соотв. с рег. настройками ПК).
0
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68
25.01.2013, 13:33  [ТС]
Нашел ошибку! Все работает. Спасибо!
У меня объект имеет название "с1". И я случайно прописал c на русском.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9
13.11.2019, 06:45
Черт, хотел уйти получив нужный ответ.
Но, что то внутри не дал закрыть страницу, не поблагодарив Апострофф,
Добрый чел, ну огромное вам человеческое спасибо, за такой код с подробными разъяснениями.
Не везде встретишь разъяснение каждой строчки, за него отдельное спасибо
0
13.11.2019, 10:54

Не по теме:

Собир, его уже нет на свете

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2019, 10:54
Помогаю со студенческими работами здесь

Контроль ввода в textBox
Здравствуйте, пишу конвертер, возникла такая проблема - нужен ограниченный ввод символов в textBox. Т.е., если пользователь выбирает...

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

Контроль проверки ввода значений в TextBox
Нужно проверить при помощи волидатора ввод в TextBox, является ли введенное значение числом. Подскажите, пожалуйста, как это сделать?

Проверка корректности ввода числа в шестнадцатеричной системе счисления
Добрый день! Мне нужно проверить правильность введенного числа в шестнадцатеричной системе счисления. Т.е. программа должна выдавать...

Контроль ввода числа
Суть в том , что в данном случае код перестает работать, когда я ввожу цифру...тут у меня 1. Подскажите, а как сделать так, чтобы я мог...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru