Я хочу, чтобы установить текст на текстовом поле/текстовой элемент с UI Automation рамками Mircosoft это означает, что на 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");
}