在输入编辑框之前如何拦截键盘输入?

How do I intercept a keyboard entry before it is entered into an edit box?

如何在输入编辑框之前拦截键盘输入?我有:

<Window x:Class="X.MainWindow"
        KeyDown="Window_KeyDown"
        >

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Add) 
        return;
}//Window_KeyDown

检测到按下键盘数字部分的“+”按钮。它还在我的编辑框中放置了一个“+”。我该如何防止这种情况发生?

在将密钥发送到文本框之前,您已经拦截了该密钥。

现在,设置

e.Handled = true;

这样事件就不会一直传播到文本框

http://msdn.microsoft.com/en-us/library/system.windows.routedeventargs.handled(v=vs.110).aspx

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Add) 
    {
        e.Handled = true; // Prevents the event from propagating further.
        return;
    }
}//Window_KeyDown

如果按下的是 letter/symbol 你不想被输入,只需添加 "e.Handled = true;" 就像

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Add) 
        e.Handled = true;
}//Window_KeyDown

查看在 KeyDown 事件之前引发的 PreviewKeyDown 事件,如果按下某个键,您不想设置 e.Handled = true,请注意,如果您设置 e.Handled = truePreviewKeyDown 事件中,KeyDown 事件将被视为同时处理并将被抑制

如何停止输入组合框?

protected override void OnKeyDown(KeyEventArgs e)
{
  e.SuppressKeyPress = true;
  e.Handled = true;
  return;
  //base.OnKeyDown(e);
}