Только алфавитные символы в текстовом поле WPF - PullRequest
0 голосов
/ 18 марта 2020

Здравствуйте, у меня возникла проблема. Я использую этот код:

private void OnlyText(object sender , TextCompositionEventArgs e)
{
  Regex regex = new Regex("^[a-zA-Z]+$");
  e.Handled = regex.IsMatch(e.Text);
}

XAML

<TextBox PreviewTextInput="OnlyText" x:Name="tbSurrname" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="Nazwisko" VerticalAlignment="Top" Width="120" Margin="81,137,0,0"/>

, чтобы разрешить в текстовом поле wpf только алфавитные символы, но не работает ни одно из решений?

Ответы [ 3 ]

0 голосов
/ 18 марта 2020

Раствор

private void OnlyAlphabetical(object sender, KeyEventArgs e)
        {
            if ((e.Key < Key.A) || (e.Key > Key.Z))
            {
                e.Handled = true;
            }

        }
0 голосов
/ 20 марта 2020

Добро пожаловать в SO!

Простое исправление, измените это:

e.Handled = regex.IsMatch(e.Text);

... на это:

e.Handled = !regex.IsMatch(e.Text);
0 голосов
/ 18 марта 2020

Хотя я не вижу никаких проблем с вашим регулярным выражением, я рекомендую использовать

e.Handled = e.Text.All(ch => char.IsLetter(ch) && ch < 128);

ch < 128, чтобы убедиться, что у нас есть только символы ASCII.

Regex это просто " «слишком тяжелый» для такой простой задачи.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...