Разрешить вводить / копировать-вставлять только числа в wpf PasswordBox, как TextBox - PullRequest
0 голосов
/ 17 ноября 2018

Вы разрешаете вводить только числа в TextBox, используя следующий код.

Следующий код: окей.

Private Sub Textbox1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles Textbox1.TextChanged
    Dim myRegex As New Text.RegularExpressions.Regex("[^\d]")
    Textbox1.Text = myRegex.Replace(Textbox1.Text, "")
End Sub

Мне нужно то же действие для PasswordBox.

Следующий код дает эту ошибку: https://prnt.sc/ljk9ty

Private Sub PasswordBox1_PasswordChanged(sender As Object, e As RoutedEventArgs) Handles PasswordBox1.PasswordChanged
    Dim myRegex As New Text.RegularExpressions.Regex("[^\d]")
    PasswordBox1.Password = myRegex.Replace(PasswordBox1.Password, "")
End Sub

Итак, приведенный выше код необходимо исправить.

1 Ответ

0 голосов
/ 17 ноября 2018

Вы можете зарегистрировать событие PreviewTextInput и проверить ввод пользователя.Если ввод не является числом, вы можете установить значение e.Handled как true, чтобы игнорировать этот ввод.

private void PasswordBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    Regex regex = new Regex("[0-9]+");
    if (!regex.IsMatch(e.Text))
    {
        e.Handled = true;
    }
}

ОБНОВЛЕНИЕ:

Теперь ваше требование ясно, вот как вы можете обрабатывать ввод в обоих случаях

    private void PasswordBox1_PasswordChanged(object sender, RoutedEventArgs e)
    {
        System.Text.RegularExpressions.Regex myRegex = new System.Text.RegularExpressions.Regex(@"[^\d]");
        if (myRegex.IsMatch(PasswordBox1.Password))
            PasswordBox1.Password = myRegex.Replace(PasswordBox1.Password, "");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...