我正在尝试模拟WPF TextBox控件的键盘输入(这样做的原因超出了本问题的范围)。但是,我很难让文字出现。
我制作了一个包含单个按钮和单个文本框的简单WPF应用程序,我想在单击按钮时模拟键盘按下,导致单个字符的文本(字母" A&# 34;)输入文本框。这就是我到目前为止所做的:
private void button_Click(object sender, RoutedEventArgs e)
{
var key = Key.A;
var target = textBox1; // Keyboard.FocusedElement;
// None of these actually induce text to appear in the textbox
target.RaiseEvent(new KeyEventArgs(Keyboard.PrimaryDevice, PresentationSource.FromVisual((Visual)target), 0, key) { RoutedEvent = Keyboard.PreviewKeyDownEvent });
target.RaiseEvent(new KeyEventArgs(Keyboard.PrimaryDevice, PresentationSource.FromVisual((Visual)target), 0, key) { RoutedEvent = Keyboard.PreviewKeyUpEvent });
target.RaiseEvent(new KeyEventArgs(Keyboard.PrimaryDevice, PresentationSource.FromVisual((Visual)target), 0, key) { RoutedEvent = Keyboard.KeyDownEvent });
target.RaiseEvent(new KeyEventArgs(Keyboard.PrimaryDevice, PresentationSource.FromVisual((Visual)target), 0, key) { RoutedEvent = Keyboard.KeyUpEvent });
}
我已尝试将事件处理程序附加到文本框,我可以看到并验证文本框是否正在接收事件。但是,它们实际上都没有显示任何文字。
如何通过举办活动来触发文字输入?
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
您是否尝试过控制器的AutomationPeer,例如:
s = 'I am a string replaceme'
d = {
'replaceme': 'replace me'
}
print(" ".join([w if w not in d else d[w] for w in s.split(" ")]))