我只想在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;
}
答案 0 :(得分:1)
不是直接通过按键事件输入到TextBox,并且在许多情况下,文本输入根本不涉及按键事件(例如IME,自动完成,屏幕键盘,墨水输入,语音识别)等)
TextChanging和TextChanged事件无论文本的来源如何都将触发,因此是实现过滤器的更好位置。
Windows Community Toolkit中有一些预建的筛选扩展,它们可能适合您而不是您自己滚动。检出TextBoxMask和TextBoxRegex。