powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / textbox
18 сообщений из 18, страница 1 из 1
textbox
    #35814832
kaskad755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
работа с цифрами в textbox(ограничение ввода) от1 до 12, а 13 и далее запретить???
...
Рейтинг: 0 / 0
textbox
    #35815034
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) у TextBox есть св-во MaxLength
2) в эвенте TextBox_Change сами проверяйте длину вводимого слова и при превышении отменяйте ввод

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
textbox
    #35815183
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-то я не туда нажимал... если кому дублировалось это сообщение - мои извенения...
кинь на форму TextBox1, перетащи код
'----------------------
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode > 48 And KeyCode < 58 Or KeyCode = 8 Then
If KeyCode <> 8 Then _
If CInt(TextBox1.Text & Chr$(KeyCode)) < 1 Or _
CInt(TextBox1.Text & Chr$(KeyCode)) > 13 Then KeyCode = 0
Else
KeyCode = 0
End If
End Sub
'----------------------
удалять ненужные символы можно только клавишей BackSpace... можешь включить и код клавиши Del...
...
Рейтинг: 0 / 0
textbox
    #35815197
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, дочитался, если и 13 надо запретить, то в проверке делаем до 12
вот так

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode > 48 And KeyCode < 58 Or KeyCode = 8 Then
If KeyCode <> 8 Then _
If CInt(TextBox1.Text & Chr$(KeyCode)) < 1 Or _
CInt(TextBox1.Text & Chr$(KeyCode)) > 12 Then KeyCode = 0
Else
KeyCode = 0
End If
End Sub
...
Рейтинг: 0 / 0
textbox
    #35815232
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не мой сегодня день.... в вышеуказанном коде запрещено и 0 вводить, т.е. 10 не будет...
вот код, в ТекстБокс вводятся символы от 1 до 12....

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode > 47 And KeyCode < 58 Or KeyCode = 8 Then
If KeyCode <> 8 Then _
If CInt(TextBox1.Text & Chr$(KeyCode)) < 1 Or _
CInt(TextBox1.Text & Chr$(KeyCode)) > 12 Then KeyCode = 0
Else
KeyCode = 0
End If
End Sub
...
Рейтинг: 0 / 0
textbox
    #35816838
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот код не защищает от копирования из clipboard. Нужен еще Event Validate хотя бы.
...
Рейтинг: 0 / 0
textbox
    #35816840
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз такое необычное требование, то Textbox замените на Listbox.
...
Рейтинг: 0 / 0
textbox
    #35817182
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerне согласен, разрешенный диаппазон вводимых симолов по коду ASCII от 48 до 57, т.е. ввод только цифр, другие клавиши (сочетания клавишь) при активном ТекстБоксе - игнорируются.
Если надо перестраховаться, добавляем код на еще одну обработку:
'--------------------------
Private Sub TextBox1_Change()
If TextBox1.Text <> "" Then _
If CLng(TextBox1.Text) < 1 Or CLng(TextBox1.Text) > 12 Then TextBox1.Text = ""
End Sub
'--------------------------
...
Рейтинг: 0 / 0
textbox
    #35817210
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC,

Ваш код не работает. Он генерирует ошибку Type Mismatch
...
Рейтинг: 0 / 0
textbox
    #35817221
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошу код ошибки (err.number)...
...
Рейтинг: 0 / 0
textbox
    #35817232
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
возможные причины:
1. когда TextBox1 кинете на форму, установите свойство TextBox1.Text="" (в панельке Property)
(по умолчанию он он установлен в значение имени ТекстБокса, т.е. в TextBox1).
У меня VB.Net 2008, код набивал в VBA, там по умолчание параметр TextBox1.Text=""
думаю проблема решиться...
...
Рейтинг: 0 / 0
textbox
    #35817420
Metla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub Text1_Change()
If IsNumeric(Text1.Text) Then
If CInt(Text1.Text) > 12 Then Text1.Text = 12
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = VNUM(KeyAscii, Text1, Text1.Text, True, True)
End Sub


Public Function VNUM(intAscii As Integer, ctrControl As Control, strText As String, _
Optional bSign As Boolean = False, _
Optional bPoint As Boolean = False) As Integer
' Ввод символа по умолчанию
VNUM = intAscii
Select Case intAscii
Case 8: ' Клавиша Backspace
Case 45: If (Not bSign) Or (ctrControl.SelStart > 0) Or (InStr(strText, "-")) Or (InStr(strText, "+")) Then VNUM = 0
Case 44, 46: If (Not bPoint) Or (InStr(strText, ".")) Or (InStr(strText, ",")) Then VNUM = 0
Case 48 To 57: ' Цифры от 0 до 9
Case Else: VNUM = 0 ' Все остальное
End Select
End Function
...
Рейтинг: 0 / 0
textbox
    #35817421
Metla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправочка
KeyAscii = VNUM(KeyAscii, Text1, Text1.Text, False , True)
...
Рейтинг: 0 / 0
textbox
    #35817978
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC,

Zachem vam kod oshibki Type Mismatch? Eto zhe ne redkost' kakya-to. A prichina v tom, chto kod ne podderzhivaet bukvennyj vvod.
...
Рейтинг: 0 / 0
textbox
    #35817980
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Metla,
Ваш код позволяет вводить знак "-", число 10 и вообще копировать из буфера что угодно. Короче, Ваш код тоже не работает.
...
Рейтинг: 0 / 0
textbox
    #35817981
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК, число 10, оказывается разрешалось. Ну да все равно, код позволяет вводить мусор из буфера.
...
Рейтинг: 0 / 0
textbox
    #35818012
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConn,
и так, заключение:
1. направление было показано - кому надо, модифицируйте/усовершенствуйте!
2. код работает. Даже переделанный под VS - 2008, рабоботает, и из буфера не вставляет...

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode > 47 And e.KeyCode < 58 Or e.KeyCode = 8 Then
If e.KeyCode <> 8 Then _
If CInt(TextBox1.Text & Chr(e.KeyCode)) < 1 Or _
CInt(TextBox1.Text & Chr(e.KeyCode)) > 12 Then e.SuppressKeyPress = True
Else
e.SuppressKeyPress = True
End If
End Sub

3. еще раз: значение TextBox1.Text при загрузке формы, по-умолчанию должно быть "" (пусто).
4. первоначальное задание - "работа с цифрами"..., символы мы и не вставим.
...
Рейтинг: 0 / 0
textbox
    #35834814
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это для .Net, другой форум...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / textbox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]