8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
1

Запретить ввод в текстовое поле определенных символов

09.07.2018, 17:01. Показов 2173. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго дня еще раз.
Как запретить ввод в текстовое всего, кроме цифр и не более 2х точек
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2018, 17:01
Ответы с готовыми решениями:

Запретить ввод определенных символов
В текстовое поле можно вводить буквы лат. и рус.алфавита, пробел, дефис, цифры. В KeyPress...

Как запретить ввод определенных символов в текстовые поля
Всем доброго вечера. Есть несколько проблем, и голова уже плохо соображает, со вчерашнего дня сижу...

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

Подскажите пожалуйста как полность запретить ввод символов в текстовое поле
Делаю лабораторную работу по веб-программированию первое, что надо было сделать, осуществить...

5
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.07.2018, 17:30 2
Что-то мне подсказывает, что тут лучше использовать MaskedTextBox
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
09.07.2018, 17:56  [ТС] 3
ViterAlex, но все же хотелось бы с текстовым полем
нашел код:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
 
    '97 - 122 = Ascii codes for simple letters
    '65 - 90  = Ascii codes for capital letters
    '48 - 57  = Ascii codes for numbers
 
    If Asc(e.KeyChar) <> 8 Then
        If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
            e.Handled = True
        End If
    End If
 
End Sub
как в него добавить исключение, что разрешено вводить еще 2 точки?
0
Модератор
Эксперт .NET
4201 / 3286 / 496
Регистрация: 27.01.2014
Сообщений: 6,028
09.07.2018, 18:01 4
adb420, так может в таком случае проще не ловить нажатья клавиш, а проверять посимвольно введенный текст и удалять все кроме цифр и двух точек? Например используя Regex класс?
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.07.2018, 18:04 5
Цитата Сообщение от adb420 Посмотреть сообщение
все же хотелось бы с текстовым полем
ходить на костылях запретить не могу. Твой код не будет ловить вставку из буфера.
2
1047 / 898 / 211
Регистрация: 29.09.2015
Сообщений: 1,004
09.07.2018, 20:26 6
Лучший ответ Сообщение было отмечено adb420 как решение

Решение

Костыль!
Работает без учета количества разрядов. Закомментирован вариант учитывающий разряды не более 3 в секции

VB.NET
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
Imports System.Text.RegularExpressions
'...
 
    Private _lastText As String = String.Empty
    Private _lastPos As Integer
    Private _lockEv As Boolean = False
    'Private _pattern As String = "^(?:\d{0,3}|(?:\d{1,3}\.\d{0,3})|(?:\d{1,3}\.\d{1,3}\.\d{0,3}))$"
    Private _pattern As String = "^(?:\d*|(?:\d+\.\d*)|(?:\d+\.\d+\.\d*))$"
 
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        If _lockEv Then Return
        Dim tb As TextBox = CType(sender, TextBox)
        Dim txt As String = tb.Text
        If Not Regex.IsMatch(txt, _pattern) Then
            _lockEv = True
            tb.Text = _lastText
            _lockEv = False
            tb.SelectionStart = _lastPos
        Else
            _lastText = txt
            _lastPos = tb.SelectionStart
        End If
    End Sub
 
    Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
        If Not (Char.IsControl(e.KeyChar) Or Char.IsDigit(e.KeyChar) Or e.KeyChar = "."c) Then
            e.Handled = True
        End If
    End Sub
И еще нужно учесть, что если стоит только последняя точка без последующих цифр, то можно сделать корректировку текстового поля при событии TextBox.LostFocus
2
09.07.2018, 20:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2018, 20:26
Помогаю со студенческими работами здесь

Как запретить ввод определенных символов?
здраствуте, как можно запретить ввод определенных символов в &quot;int main&quot; (да и в целом) ? допустим,...

Запретить ввод определенных символов в EDIT
Подскажите, как запретить ввод цифр 0-9 в EDIT? hWndInput = CreateWindowEx(WS_EX_CLIENTEDGE,...

Запрет на ввод определённых символов в поле
Здравствуйте, помогите пожалуйста, на форме есть TextBox, куда вводяться номера карт (типа B1234,...

Запрет на ввод определенных символов в поле
Ребята, подскажите пжл как поставить на текстовое поле формы контроль на ввод определенных...

Запретить ввод в поле ввода символов < > []
Есть форма добавления ссылки &lt;tr&gt;&lt;th width=&quot;250&quot;&gt;URL сайта (с http://)&lt;/th&gt; &lt;td&gt;&lt;input...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru