Setzen Sie mit dem Automatisierungsframework Text auf Textfeld / Textbox und rufen Sie das Änderungsereignis ab

Ich möchte mit der Mircosoft einen Text auf ein Textfeld / Textbox-Element setzenUI-Automatisierung Rahmen, das heißt auf aAutomationElement von demControlType.Edit oderControlType.Document.

Im Moment benutze ich dieTextPattern um den Text von einem dieser zu erhaltenAutomationElements:

TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();

Aber jetzt möchte ich einen neuen Text in das einstellenAutomationElement. Ich kann keine Methode dafür im Internet findenTextPattern Klasse. Also versuche ich das zu benutzenValuePattern Aber ich bin mir nicht sicher, ob das der richtige Weg ist:

ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);

Gibt es eine andere Möglichkeit, den Textwert festzulegen?

Eine andere Frage ist, wie ich ein Ereignis erhalten kann, wenn der Text auf einem geändert wurdeEdit / Document Element? Ich habe versucht, die zu verwendenTextChangedEvent aber ich bekomme keine Ereignisse ausgelöst, wenn ich den Text ändere:

AutomationEventHandler ehTextChanged = new AutomationEventHandler(text_event);
Automation.AddAutomationEventHandler(TextPattern.TextChangedEvent, element, TreeScope.Element, ehTextChanged);

private void text_event(object sender, AutomationEventArgs e)
{
    Console.WriteLine("Text changed");
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage