WPF文本框事件

本文关键字:事件 文本 WPF | 更新日期: 2023-09-27 18:07:04

我有一个文本框,我需要用户只输入西里尔字母。用户不能输入数字、特殊字符(空格除外)和拉丁字符!变量"l"的值我将自己设置。

我如何使KeyDown事件做到这一点?

在WindowsForms中,我这样做:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    char l = e.KeyChar;
    if ((l < 'А' || l > 'я') && l != ''b' )
    {
       e.Handled = true;
    }
}

WPF文本框事件

我发现最简单的方法是利用OnPreviewTextInput事件:

标记:

<TextBox PreviewTextInput="UIElement_OnPreviewTextInput" />

处理程序:

private void UIElement_OnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
    bool isCyrillic = Regex.IsMatch(e.Text, @"'p{IsCyrillic}");
    e.Handled = !isCyrillic;
}