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");
}