C# 文本合成事件和预览输出
我通过InputManager以编程方式将一些文本发送到TextBox,但在更改文本之前,它不会触发PreviewTemperate 带屏幕键盘的WPF应用程序。在某些情况下(输入货币等),文本在引入文本框之前需要验证C# 文本合成事件和预览输出,c#,wpf,C#,Wpf,我通过InputManager以编程方式将一些文本发送到TextBox,但在更改文本之前,它不会触发PreviewTemperate 带屏幕键盘的WPF应用程序。在某些情况下(输入货币等),文本在引入文本框之前需要验证 var target = TKeyboard.FocusedElement; var eventArgs = new TextCompositionEventArgs( Keyboard.PrimaryDevice,
var target = TKeyboard.FocusedElement;
var eventArgs = new TextCompositionEventArgs(
Keyboard.PrimaryDevice,
new TextComposition(InputManager.Current, target, text))
{
RoutedEvent = UIElement.TextInputEvent
};
InputManager.Current.ProcessInput(eventArgs);
我需要以编程方式添加文本,并能够在输入文本框之前对其进行验证。也许这种方法不可能,我需要不同的方法?如果
键盘。FocusedElement
返回正确的控件,然后将事件参数的源设置为目标,并在文本合成对象中使用UIElement.PreviewtdeputEvent
var target = Keyboard.FocusedElement;
var eventArgs = new TextCompositionEventArgs(
Keyboard.PrimaryDevice,
new TextComposition(InputManager.Current, target, text))
{
RoutedEvent = UIElement.PreviewTextInputEvent // <==Use another event
};
eventArgs.Source = target; // <==Set the Source
InputManager.Current.ProcessInput(eventArgs);
var target=Keyboard.FocusedElement;
var eventArgs=new TextCompositionEventArgs(
键盘。主设备,
新文本合成(InputManager.Current、target、text))
{
RoutedEvent=UIElement.PreviewTestInputEvent//问题出在哪里?在ProcessInput()
上没有触发事件或文本没有更改?使用TextCompositionEvent输入文本不会触发PreviewTestInput,因此在将其引入控件之前无法发送文本。请参阅我的答案,使用另一个事件。