null activesourceでバックスペースボタンのシミュレーションC#を押す

StackOverflow https://stackoverflow.com/questions/3640128

  •  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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top