Вопрос
Как в VB.NET в TextBox разрешить ввод только цифр? Приветствуется метод, для которого нужно только поменять какое-нибудь св-во.
Ответ
Старый добрый простой способ (но для VB6):
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Если нужно _только_ цифры и больше ничего, вот вариант решения из форума gotdotnet.ru (просто кладезь мудрости :-))
====
Дальше я еще больше удивился когда необнаружил у TextBox'a возможности вводить только цифры, как с применением стиля ES_NUMBER (это-же так просто, думал я, почему они недобавили возможность в виде свойства выставлять этот стиль):
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal _
hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal _
hwnd As Integer, ByVal nIndex As Integer) As Integer
Private Const GWL_STYLE As Integer = (-16)
Private Const ES_NUMBER As Integer = &H2000
SetWindowLong(txtDev1.Handle.ToInt32, GWL_STYLE,
GetWindowLong(txtDev1.Handle.ToInt32, GWL_STYLE) Or ES_NUMBER)
====
А этот способ позволит вводить в TextBox и символы новой строки:
Private Sub txtDevMany_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDevMany.KeyPress
If Not (e.KeyChar.IsNumber(e.KeyChar) Or e.KeyChar.IsControl(e.KeyChar)) Then e.Handled = True
End Sub
Из конференции VB
Copyright 2000-2004 Сообщество Чайников
Контактная информация