我想开发一个限制像%这样的特殊符号的文本框。我使用textbox的keydown事件来限制'%'。我已经将代码用作
if(Keyboard.Modifiers == ModifierKeys.Shift && e.key == key.D5)
{
e.handle=true;
return;
}
当我在mvvm架构中实现它时,我遇到了依赖属性的问题,当我将systemkey转换为字符串格式时,它只识别shift作为一个键而D5识别为另一个键。
如何识别%符号?
答案 0 :(得分:4)
您可以收听PreviewTextInput事件而不是KeyDownEvent:
myTextBox.PreviewTextInput += PreviewTextInputHandler;
然后:
private void PreviewTextInputHandler(Object sender, System.Windows.Input.TextCompositionEventArgs e)
{
e.Handled = !AreAllValidChars(e.Text);
}
这是我在我的应用程序中使用的一个这样的函数,你需要稍微调整它来测试正确的字符,但是你知道该怎么做。
至于获得%caracter,你只需写下类似的内容:
if (e.Text == '%') ...;