СообЧа > База Знаний > Программирование > .NET

Вопрос

Как в 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 Сообщество Чайников
Контактная информация