簡體   English   中英

在WPF \\ C#中按下按鈕時模擬Backspace

[英]Simulate the Backspace on a button press in WPF\C#

我寫了一個WPF觸摸屏應用程序。 在這個應用程序中,我編寫了一個用戶控件,它是一個觸摸屏鍵盤。

我把所有的鍵都放在了退格之外。 顯然所有鍵都是按鈕,在退格按鈕上單擊我想將后空格鍵發送到聚焦文本框。

我嘗試了以下但是這只是在我的文本框中插入一個方形字符:

private void buttonBackSpace_Click(object sender, RoutedEventArgs e)
{
    PresentationSource source = PresentationSource.FromDependencyObject(CurrentControl);
    //CurrentControl is my Textbox
    KeyEventArgs ke = new KeyEventArgs(Keyboard.PrimaryDevice, source, 0, Key.Back)
    {
        RoutedEvent = UIElement.KeyDownEvent
    };
    System.Windows.Input.InputManager.Current.ProcessInput(ke);
}

有任何想法嗎? 我正在使用Visual Studio 2012和Windows 8。

我不確定這是不是一個錯字,但我認為你的問題是

KeyEventArgs ke = new KeyEventArgs(Keyboard.PrimaryDevice, source, 0, Key.Back)

應該是:

KeyEventArgs ke = new KeyEventArgs(Keyboard.PrimaryDevice, source, 0, Keys.Back)

我認為Keys枚舉就是你在這里尋找的東西。

編輯:上述答案不起作用。 但是,下面的答案應該可以解決問題。

private void buttonBackSpace_Click(object sender, RoutedEventArgs e)
{
    CurrentControl.Focus();
    keybd_event(BACK, 0, KEYEVENTF_KEYDOWN, 0);
    keybd_event(BACK, 0, KEYEVENTF_KEYUP, 0);
}
// Virtual Keypress Function
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_KEYDOWN = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int BACK = 0x08; // Backspace keycode.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM