[英]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.