Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/39: Рейтинг темы: голосов - 39, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 68

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

25.01.2013, 07:53. Показов 7345. Ответов 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
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 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
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 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
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru