在WPF时TextBox是有PreviewKeyDown事件的,但在UWP中没有找到这个事件,只好使用KeyDown事件来屏蔽用户的非法输入,但是我发现并不能屏蔽掉 ,。、;‘【】这样的中文符号,根本不会触发KeyDown,而且在开启拼音输入法时,可以输入字母,当用户输入字母时,输入法出现中文字,这时按Sihft或者Enter可以直接输入刚才按下的字母。现在主要是物理键盘的屏蔽,手机端倒是很简单的设置InputScope就可以了。我主要是想实现数值的输入比如:
123456
0.12345
-12345
-0.12345
哪位老师给解答一下。谢谢.后贴上我的代码。
private void QK_KeyDown(object sender, KeyRoutedEventArgs e)
{
TextBox tb = sender as TextBox;
e.Handled = true;
if (e.Key >= VirtualKey.NumberPad0 && e.Key <= VirtualKey.NumberPad9)//小键盘的1-9
{
e.Handled = false;
}
if (e.Key >= VirtualKey.Number0 && e.Key <= VirtualKey.Number9)//键盘顶的1-9
{
e.Handled = false;
}
if (e.Key == VirtualKey.Decimal)//小数点
{
if (texBox.Text.IndexOf(".") == -1)
{
if (texBox.SelectionStart > 0)
{
e.Handled = false;
}
}
}
//if (e.Key == Key.Decimal)//数字键盘小数点
//{
// if (texBox.Text.IndexOf(".") == -1)
// {
// if (texBox.SelectionStart > 0)
// {
// e.Handled = false;
// }
// }
//}
if (texBox.SelectionStart == 0 && e.Key == VirtualKey.Subtract)//负号
{
e.Handled = false;
}
if (e.Key == VirtualKey.Back)//前删
{
e.Handled = false;
}
if (e.Key == VirtualKey.Delete)//后删
{
e.Handled = false;
}
}