如何在wpf中限制文本框中%等特殊符号?

时间:2011-02-01 11:45:28

标签: wpf textbox validation

我想开发一个限制像%这样的特殊符号的文本框。我使用textbox的keydown事件来限制'%'。我已经将代码用作

if(Keyboard.Modifiers == ModifierKeys.Shift && e.key == key.D5)    
{    
    e.handle=true;    
    return;    
}

当我在mvvm架构中实现它时,我遇到了依赖属性的问题,当我将systemkey转换为字符串格式时,它只识别shift作为一个键而D5识别为另一个键。

如何识别%符号?

1 个答案:

答案 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 == '%') ...;