WPF 将密钥发送到文本框

WPF send key to textBox

我正在使用虚拟键盘,但我很难发送按键。什么都没有发生,除非我将它们硬添加到文本框。这是我的代码

  public static void Send(Key key)
    { //Found online
                var e = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, key)
                {
                    RoutedEvent = Keyboard.KeyDownEvent
                };
                InputManager.Current.ProcessInput(e);
    }


  private void ClickOnKey(object sender, RoutedEventArgs e)
    {
        CustomButton cb = sender as CustomButton;
        string text = cb.text;
        Console.WriteLine(text);
        element_to_focus.Focus(); //The textbox
        Send(translate_string_to_key(text));
     }

ProcessInput似乎只会引发相应的键相关事件,但不会真正修改文本。

如果你真的想模拟按键,你需要利用 p/invoke 并使用 SendInput。幸运的是,有人已经为我们完成了 p/invoke 的工作,并提供了他们的工作:
https://archive.codeplex.com/?p=inputsimulator

它也可以作为 NuGet 包使用(我找到了两个版本):
https://www.nuget.org/packages/InputSimulator/
https://www.nuget.org/packages/InputSimulatorPlus/