C#UWP KeyDown事件e。处理奇怪的行为

时间:2019-06-25 16:01:44

标签: uwp

我只想在UWP TextBox元素中启用某些键。但是设置e.Handled = false并没有帮助。接受所有密钥。

在WPF中的类似应用。

如何解决这个问题?

XAML:

 <Grid>
        <TextBox HorizontalAlignment="Left" Margin="251,166,0,0" VerticalAlignment="Top" KeyDown="TextKeyDown" Height="32" Width="579"/>
    </Grid> 

C#

private void TextKeyDown(object sender, KeyRoutedEventArgs e)
        {
            if (System.Text.RegularExpressions.Regex.IsMatch(e.Key.ToString(), "[0-9]"))
            {
                e.Handled = false;
                System.Diagnostics.Debug.WriteLine("number");
            }
            else e.Handled = true;


}

1 个答案:

答案 0 :(得分:1)

不是直接通过按键事件输入到TextBox,并且在许多情况下,文本输入根本不涉及按键事件(例如IME,自动完成,屏幕键盘,墨水输入,语音识别)等)

TextChangingTextChanged事件无论文本的来源如何都将触发,因此是实现过滤器的更好位置。

Windows Community Toolkit中有一些预建的筛选扩展,它们可能适合您而不是您自己滚动。检出TextBoxMaskTextBoxRegex