установить текст в текстовое поле / текстовое поле с помощью инфраструктуры автоматизации и получить событие изменения
Я хочу установить текст в элементе textfield / textbox с помощью MircosoftUI Automation рамки, это означает, что наAutomationElement
отControlType.Edit
или жеControlType.Document
.
В данный момент я используюTextPattern
чтобы получить текст от одного из нихAutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
Но теперь я хочу установить новый текст вAutomationElement
, Я не могу найти способ для этого вTextPattern
учебный класс. Поэтому я пытаюсь использоватьValuePattern
но я не уверен, что это правильный способ сделать это:
ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);
Есть ли другой способ установить значение текста?
Другой вопрос, как я могу получить событие, когда текст был изменен наEdit
/ Document
элемент? Я пытался использоватьTextChangedEvent
но я не получаю никаких событий при изменении текста:
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");
}