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

时间:2015-01-16 19:29:47

标签: c# wpf keyboard

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

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

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

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

4 个答案:

答案 0 :(得分:4)

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

现在,设置

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

答案 1 :(得分:0)

如果keypressed是你不想输入的字母/符号,jsut add“e.Handled = true;”喜欢

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如何停止进入组合框?

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