Имитация нажатия кнопки Backspace в c # с нулевым ActiveSource - PullRequest
2 голосов
/ 04 сентября 2010

Контекст: мы используем экранную клавиатуру в киоске сенсорного экрана, чтобы позволить пользователям вводить текст.Кнопка возврата не работает, потому что System.Windows.Input.Keyboard.PrimaryDevice.ActiveSource становится нулевым.

Контекст кода:

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");
}

Я не могу использовать KeyEventArgs с нулевым ActiveSourceи System.Windows.Forms.SendKeys.SendWait ("{BACKSPACE}") также не работают.

1 Ответ

6 голосов
/ 04 сентября 2010

Я просто подделал источник, чтобы исправить это так:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...