null activesourceでバックスペースボタンのシミュレーションC#を押す
-
30-09-2019 - |
質問
コンテキスト:タッチスクリーンキオスクで画面上のキーボードを使用して、ユーザーがテキストを入力できるようにしています。 System.windows.input.keyboard.primarydevice.activesourceがnullになるため、バックスペースボタンが故障しています。
コードコンテキスト:
if (System.Windows.Input.Keyboard.PrimaryDevice.ActiveSource != null)
{
System.Windows.Input.KeyEventArgs ke =
new System.Windows.Input.KeyEventArgs(
System.Windows.Input.Keyboard.PrimaryDevice,
System.Windows.Input.Keyboard.PrimaryDevice.ActiveSource,
0,
System.Windows.Input.Key.Back);
ke.RoutedEvent = UIElement.KeyDownEvent;
System.Windows.Input.InputManager.Current.ProcessInput(ke);
}
else
{
Console.Out.WriteLine("Problemo");
}
null activesource、およびsystem.windows.sendkeys.sendwait( "{backspace}")でkeyeventargsを使用することもできません。
解決
私はソースをスプーフィングして、そうするように修正しました:
else
{
//Hacky? Perhaps... but it works.
PresentationSource source = PresentationSource.FromVisual(this);
KeyEventArgs ke = new KeyEventArgs(
Keyboard.PrimaryDevice,
source,
0,
System.Windows.Input.Key.Back);
ke.RoutedEvent = UIElement.KeyDownEvent;
System.Windows.Input.InputManager.Current.ProcessInput(ke);
}
所属していません StackOverflow