Ограничить текстовое поле принимать цифры и буквы только в приложении магазина Windows 8

1

Я новичок в программировании, и я пытаюсь создать текстовое поле, которое принимает только буквы и цифры. Я искал решения, но не могу найти то, что хочу. Это то, что я сделал до сих пор:

private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == VirtualKey.Space)
        {
            e.Handled = true;
        }
        var regex = new Regex(@"[^a-zA-Z0-9\s]");
        if (regex.IsMatch(e.Key.ToString()))
        {
            e.Handled = true;
        }
    }

Я могу удалить числа в регулярное выражение, чтобы пользователь не вводил специальные символы, но это также ограничивает их при наборе цифр. Это текстовое поле будет частью приложения для магазина Windows 8, и я использую С#. Надеюсь, кто-то может мне помочь. Благодарю!

РЕДАКТИРОВАТЬ:

Я должен отказаться от ограничения ввода пользователем специальных символов в текстовое поле, потому что я не приближаюсь к нему. Я сделал то, что использовал свой первый код, но с некоторыми изменениями.

private void TB1_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == VirtualKey.Enter)
        {
            var regex = new Regex(@"[^a-zA-Z0-9\s]");
            if (regex.IsMatch(TB1.Text))
            {
                t1.Text = "Can't contain special characters.";
            }
        }

    }

Вместо использования с клавиатуры при тестировании в "Исмахе" я использовал текст в текстовом поле. Этот оператор if будет фильтроваться, если в текстовом поле присутствуют другие символы, кроме чисел и букв, поэтому я создал текстовый блок, который будет комментировать, что там есть специальный символ в текстовом поле.

Теги:

3 ответа

1

Если вы хотите использовать Regex, используйте следующее выражение регулярного выражения для соответствия.

^[a-zA-Z0-9]*$

Пример использования:

Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString))
{
      ...
}
  • 0
    Я использовал тот же код в своем вопросе, что заменил выражение регулярного выражения на указанное вами. Но я все еще могу вводить специальные символы. Или что я сделал не так? Спасибо за ответы
0

Введите следующую строку в событии KayPress текстового поля. Он не позволит пользователю вводить алфавит или любую цифру. Доступны только символы:

 e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ? false:true;

образец кода:

        private void yourTextBoxName_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = char.IsLetter(e.KeyChar) || char.IsDigit(e.KeyChar) ?false:true;
        }
0

Мой предыдущий ответ был неправильным, потому что я допустил ошибку в том, как работает VirtualKey (это не значение char).

Виртуальные ключи имеют определенное значение для любого числа, которое равно 0 -9, а нижний регистр A (a) и верхний регистр A (A) имеют одинаковое число, поэтому я сожалею, если сначала привел вас в неправильном направлении.

if(e.Key >= VirtualKey.Number0 && e.Key <= VirtualKey.Z) e.Handled = false;

Этот код должен проверить, что ваше значение ключа выше или равно значению для Number0 (48) и ниже или равно Z | z (90).

Вы можете узнать больше о VirtualKey здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню