【问题标题】:How do I intercept a keyboard entry before it is entered into an edit box?如何在键盘输入进入编辑框之前截取它?
【发布时间】:2015-03-15 11:55:02
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# wpf keyboard


    【解决方案1】:

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

    现在,设置

    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
    

    【讨论】:

      【解决方案2】:

      如果按键是您不想输入的字母/符号,只需添加“e.Handled = true;”喜欢

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          如何停止进入组合框?

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-23
            • 2019-02-07
            • 1970-01-01
            • 2020-12-16
            • 2019-09-18
            相关资源
            最近更新 更多