VB.net: разрешать только цифры, копировать и вставлять пробел, удалять в WPF?

как разрешить только цифры, без . , -, а также скопировать и вставить Ctrl C + Ctrl V, backspace and delete в текстовое поле в VB.net WPF?

Поскольку это WPF, нажатия клавиш не работают. Я не знаю решения этой проблемы.

Кажется, я не могу найти решение для этого, без этого моя программа будет ломаться каждый раз, когда кто-то вводит что-либо, кроме цифр. Пожалуйста помоги!


person pleasega    schedule 06.07.2015    source источник
comment
возможный дубликат Как мне заставить TextBox принимать только числовой ввод в WPF?   -  person Rick Smith    schedule 06.07.2015
comment
Привет, я хотел бы это в vb.net, так как я не знаю никакого c. Надеюсь ты понимаешь.   -  person pleasega    schedule 06.07.2015
comment
Ааа, пропустил это... извините. Попробуйте здесь: stackoverflow.com/questions/4801430/   -  person Rick Smith    schedule 06.07.2015
comment
Привет, я тоже это видел, но его нельзя использовать, так как у меня WPF, а в wpf нет символов ключей. Вот почему я сделал акцент на vb.net wpf. Спасибо   -  person pleasega    schedule 06.07.2015


Ответы (3)


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

person ThatGuy    schedule 07.07.2015
comment
привет wpf не имеет numericupdown, и я не могу ввести Controls:TextBoxHelper.ClearTextButton="True" с числовым updown. Любые другие идеи? - person pleasega; 07.07.2015
comment
Вам нужно будет установить расширенный набор инструментов wpf wpftoolkit.codeplex.com и использовать целое, двойное или десятичное число вверх. инструмент вниз. - person ThatGuy; 09.07.2015

О, я нашел ответ, просто включите эту функцию.

Protected Overrides Sub OnPreviewTextInput(e As    
System.Windows.Input.TextCompositionEventArgs)
e.Handled = Not AreAllValidNumericChars(e.Text)
MyBase.OnPreviewTextInput(e)
End Sub


Private Function AreAllValidNumericChars(str As String) As Boolean
For Each c As Char In str
    If Not [Char].IsNumber(c) Then
        Return False
    End If
Next
Return True

End Function`
person pleasega    schedule 07.07.2015

этот простой код поможет вам поместить числовое значение только для текстовых полей на VB.net WPF

Private Sub txtTextBox_PreviewKeyDown(sender As Object, e As KeyRoutedEventArgs) Handles txtTextBox.PreviewKeyDown
    If e.Key <> 8 Then
        '48 - 57  = Ascii codes for numeric only
        If e.Key < 48 Or e.Key > 57 Then
            e.Handled = True
        End If
    End If
End Sub
person Emmanuel Arrieta    schedule 13.12.2019