Chcę ustawić tekst na elemencie textfield/textbox z Mircosoft UI Automation ram, czyli na AutomationElement
z ControlType.Edit
lub ControlType.Document
.zestaw tekst na textField/tekstowym z ramami automatyki i uzyskać zdarzenie zmienić
Obecnie używam TextPattern
uzyskać tekst z jednego z tych AutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
Ale teraz chcę ustawić nowy tekst w AutomationElement
. Nie mogę znaleźć metody w klasie TextPattern
. Więc staram się używać ValuePattern
ale nie jestem pewien, czy to dobry sposób, żeby to zrobić:
ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);
Czy istnieje inny sposób, aby ustawić wartość tekstową?
Innym pytaniem jest, w jaki sposób można uzyskać zdarzenie, gdy tekst został zmieniony na elemencie Edit
/Document
? Próbowałem użyć TextChangedEvent
ale nie dostanę jakieś zdarzenia opalane przy zmianie tekst:
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");
}