我正在尝试使用密钥启动事件来劫持事件并阻止两件事。除了数字键或删除/返回以及一旦达到某个字符长度的最大值,就会禁止输入。
这解决了第一个验证部分,但我似乎无法找到一种方法来防止进入某个字符长度。
private void numericFieldInputField_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.D0 || e.Key == Key.D1 || e.Key == Key.D2 || e.Key == Key.D3 || e.Key == Key.D4 || e.Key == Key.D5 ||
e.Key == Key.D6 || e.Key == Key.D7 || e.Key == Key.D8 || e.Key == Key.D9 || e.Key == Key.NumPad0 || e.Key == Key.NumPad1 ||
e.Key == Key.NumPad2 || e.Key == Key.NumPad3 || e.Key == Key.NumPad4 || e.Key == Key.NumPad5 || e.Key == Key.NumPad6 ||
e.Key == Key.NumPad7 || e.Key == Key.NumPad8 || e.Key == Key.NumPad9 || e.Key == Key.Back || e.Key == Key.Delete ||
e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up || e.Key == Key.Down || e.Key == Key.Tab)
{
e.Handled = true;
}
else
{
//show validation
}
}
当我检查数字更新值的长度时,将其转换为字符串并在此时查看length属性,它们输入的最后一个字符将不会注册。此外,当我将e.Handled设置为true时,它仍然会将字符输入到输入中。我认为e.Handled = true会阻止UI将字符放入输入中吗?