如何将WPF UserControl留在UserControl内部?

时间:2018-11-10 07:31:30

标签: c# wpf user-controls keydown

我正在WPF中制作一个UC(用户控件)。我在UC中有一些文本框。当用户在其中之一上按下“返回键”时,我想离开UC。我想将返回键像主窗口中的Tab键一样对待。我该如何实施?

1 个答案:

答案 0 :(得分:0)

我在搜索中发现this post,这是我遇到的问题的答案。

这个想法是拥有一个名为SendKeys *的类,并在控件的按下事件中使用其方法。

public static class SendKeys
  {
    /// <summary>
    ///   Sends the specified key.
    /// </summary>
    /// <param name="key">The key.</param>
    public static void Send(Key key)
    {
      if (Keyboard.PrimaryDevice != null)
      {
        if (Keyboard.PrimaryDevice.ActiveSource != null)
        {
          var e1 = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, key) {RoutedEvent = Keyboard.KeyDownEvent};
          InputManager.Current.ProcessInput(e1);
        }
      }
    }
  }

然后像这样使用它:

private void textBoxesKeyDown(object sender, KeyEventArgs e) {
            switch (e.Key)
            {
                case Key.Return:
                    SendKeys.Send(Key.Tab);
                    break;
            }
 }

*注意::SendKeys是WinForm中的一个类,在WPF中不存在。顺便说一下,您可以使用这些代码来实现。