Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
 Аватар для roman412
1 / 1 / 1
Регистрация: 21.11.2012
Сообщений: 27

Фильтр ввода в textbox

05.10.2013, 03:38. Показов 5114. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Нужно сделать чтобы в текстбокс можно было вводить только символы "A-Z, a-z", и при вводе они преобразовывались в верхний регистр, при событии TextBox1_TextChanged.
Ломаю голову как это сделать, пробовал и через Select Case, и пытался разрешить ввод только символов с чаркодами этих букв, сравнивал значение строки с буквами...
Не получается. Я новичок в VB, есть необходимость познакомится с основами.
Помогите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2013, 03:38
Ответы с готовыми решениями:

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

Завершение ввода Textbox
Ввожу число в Textbox1. Как сделать, чтобы данные обрабатывались только по нажатию на клавишу Enter и курсор убирался из Textbox1? ...

Контроль корректности ввода числа в TextBox
Добрый день! Напишите, пожалуйста, код для проверки элемента textbox на число. Если этот элемент не является числом, то программа...

10
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
05.10.2013, 06:04
Цитата Сообщение от roman412 Посмотреть сообщение
пробовал и через Select Case
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
            Case 65 To 90 'Заглавные Лат
            Case 97 To 122 'строчные Лат
            
            Case Else
                KeyAscii = 0   ' остальные символы запрещены
        End Select
End Sub
Как преобразовать в верхний регистр думаю сам знаешь. Хотя можно изначально запретить ввод строчных букв.
1
 Аватар для roman412
1 / 1 / 1
Регистрация: 21.11.2012
Сообщений: 27
05.10.2013, 14:29  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Visual Basic
1
(KeyAscii As Integer)
тьфу, объявить забывал )))
Спасибо.

Добавлено через 20 минут
Правда результата всё равно нет((
В текстбокс могу вводить любые символы (цифры, точки, и т.п.)
Кликните здесь для просмотра всего текста
пробовал так

Visual Basic
1
2
3
4
5
6
7
8
    Private Sub TextBox1_KeyPress(KeyAscii As Integer)
        Select Case KeyAscii
            Case 65 To 90 
            Case 97 To 122 
            Case Else
                KeyAscii = 0
        End Select
    End Sub
и так...
Visual Basic
1
2
3
4
5
6
7
8
    Private Sub TextBox1_KeyPress(sender As System.Object, e As System.EventArgs, KeyAscii As Integer)
        Select Case KeyAscii
            Case 65 To 90 
            Case 97 To 122 
            Case Else
                KeyAscii = 0
        End Select
    End Sub
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
05.10.2013, 16:32
Цитата Сообщение от roman412 Посмотреть сообщение
В текстбокс могу вводить любые символы
Извиняюсь за мой скептицизм, но НЕ ВЕРЮ! С этим кодом это невозможно в VB6 - скинь проект сюда, будем посмотреть!
0
 Аватар для roman412
1 / 1 / 1
Регистрация: 21.11.2012
Сообщений: 27
05.10.2013, 16:55  [ТС]
Вся соль программы - это взаимодействие с диском(дальше она будет выполнять определённую функцию). Соответственно, на форме у нас есть текстбокс и кнопка.
Код ниже.
При введении латинской буквы в текстбокс после неё автоматом ставятся ":\", и после этого, введённое значение присваивается My.Computer.FileSystem.CurrentDirectory.
Кликните здесь для просмотра всего текста
Visual Basic
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
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As  _
System.EventArgs) Handles MyBase.Load
        TextBox1.MaxLength = 1
        'TextBox1.Text = My.Computer.FileSystem.CurrentDirectory
 
    End Sub
    Private Sub textBox1_GotFocus(sender As Object, e As System.EventArgs) Handles TextBox1.Enter
        If TextBox1.Text <> [String].Empty Then
            TextBox1.Text = ""
            TextBox1.Select(TextBox1.Text.Length, 0)
        End If
    End Sub 'textBox1_Enter
 
    Private Sub textBox1_Leave(sender As Object, e As System.EventArgs) Handles TextBox1.Leave
        TextBox1.Text = TextBox1.Text + ":\"
 
        textBox1.Select(0, 0)
    End Sub
 
 
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        Select Case KeyAscii
            Case 65 To 90 'Заглавные Лат
            Case 97 To 122 'строчные Лат
 
            Case Else
                KeyAscii = 0   ' остальные символы запрещены
        End Select
    End Sub
 
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        'Dim NewPath As String
        Dim ErrorMessage As String
        Try
            My.Computer.FileSystem.CurrentDirectory = TextBox1.Text
 
        Catch ex As Exception When TextBox1.Text = ""
            ErrorMessage = "You must enter a path."
 
        Catch
            ErrorMessage = "You must enter a valid path.  If trying " & _
            "to access a different drive, remember to include the drive " & _
            "letter."
        Finally
 
            If ErrorMessage <> Nothing Then
                MsgBox(ErrorMessage)
            End If
        End Try
        'MsgBox(My.Computer.FileSystem.CurrentDirectory)
 
    End Sub
 
    End Class


Добавлено через 54 секунды
Абсолютно точно говорю, что в текстбокс можно ввести любой символ.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
05.10.2013, 17:19
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от roman412 Посмотреть сообщение
в текстбокс можно ввести любой символ
А не смутило, что Ваш контрол называется TextBox1, а процедура, которую я Вам написал для Text1_KeyPress?
Т.о. получается. что эта процедура ни каким боком к Вашему TextBox1 не привязана?

Уже не говоря о том, что Вы ошиблись веткой форума - у вас VB серии .NET ( из 2003-2008, 2010, 2012 и т.п.), тут совсем другой синтаксис, для VB6!
Процедура работать будет и в вашей версии, просто пропишите её правильное название, найдите в IDE - система сама подскажет, что и как.
1
 Аватар для roman412
1 / 1 / 1
Регистрация: 21.11.2012
Сообщений: 27
05.10.2013, 20:10  [ТС]
Неправильное название оправдано, это я плюнул и попробовал вставить в оригинале. В первом спойлере написано как надо, TextBox1_keyPress.
Смущает то, что это оказывается VB.NET, а не VB.
У меня процедура не работает((

VB.NET
1
2
3
4
5
6
7
8
9
10
    Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        Dim KeyAscii As Integer
        Select Case KeyAscii
            Case 65 To 90 'Заглавные Лат
            Case 97 To 122 'строчные Лат
 
            Case Else
                KeyAscii = 0   ' остальные символы запрещены
        End Select
    End Sub
Это так, когда KeyAscii объявляю через Dim.

Ниже, если
VB.NET
1
KeyAscii as integer
внести в скобку,
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
    Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs, KeyAscii As Integer) Handles TextBox1.KeyDown
        Select Case KeyAscii
            Case 65 To 90 'Заглавные Лат
            Case 97 To 122 'строчные Лат
 
            Case Else
                KeyAscii = 0   ' остальные символы запрещены
        End Select
    End Sub

выдаёт такую ошибку: "Метод "Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs, KeyAscii As Integer)" не может обработать событие "Public Event KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs)", так как их сигнатуры несовместимы.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
05.10.2013, 20:30
Цитата Сообщение от roman412 Посмотреть сообщение
Смущает то, что это оказывается VB.NET, а не VB
Вместо KeyAscii - e.KeyCode
0
 Аватар для roman412
1 / 1 / 1
Регистрация: 21.11.2012
Сообщений: 27
05.10.2013, 20:41  [ТС]
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Извиняюсь за свою дубовость, но в
VB.NET
1
2
Case Else
                e.KeyCode = 0
выдаёт ошибку "Свойство "KeyCode" помечено как "ReadOnly"

Добавлено через 6 минут
Разобрался,
VB.NET
1
2
3
4
5
6
7
8
9
    Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        Select Case e.KeyCode
            Case 65 To 90 'Заглавные Лат
            Case 97 To 122 'строчные Лат
 
            Case Else
                e.SuppressKeyPress = True   ' остальные символы запрещены
        End Select
    End Sub
.
Какие кейкоды у клавиш Backspace, Tab, Delete?
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
05.10.2013, 20:45
Цитата Сообщение от roman412 Посмотреть сообщение
Какие кейкоды у клавиш Backspace, Tab, Delete?
Keys - перечисление
1
 Аватар для roman412
1 / 1 / 1
Регистрация: 21.11.2012
Сообщений: 27
05.10.2013, 20:48  [ТС]
Pro_grammer, The trick, огромное вам спасибо.
Тема исчерпана.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2013, 20:48
Помогаю со студенческими работами здесь

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

Запрет ввода определенных символов в TextBox
Пожалуйста помогите как написат программу чтобы в текстбоксе нельзя было бы ставить 1)ПРОБЕЛ, 2)ЗАПЯТАЯ, 3)ТОЧКА, 4)КОВЫЧКИ, ...

Можно ли сделать для TextBox маску ввода?
Я новичёк в этом деле... Можно ли сделать для TextBox маску ввода, к примеру дату??? Если можно то как??? Подскажите...

Событие Textbox, возниувющее после окончания ввода (+++)
Т.е. не потеря фокуса, а например нажатие Enter в Textbox, т.к. после у меня на основе этого фильтруется Recordset и выводится в DBGrid.

В TextBox хочу установить формат ввода типа Date...
Свойство DataFormat установлено в Date, Format - 12.10.2001 По идее поле ввода даты должно выглядеть '__.__.____' и при вводе не...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru