definir texto no textfield / textbox com a estrutura de automação e obter o evento de mudança
Eu quero definir um texto em um elemento textfield / textbox com o MircosoftAutomação da interface do usuário quadro, isso significa em umAutomationElement
deControlType.Edit
ouControlType.Document
.
No momento eu estou usando oTextPattern
para obter o texto de um dessesAutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
Mas agora eu quero definir um novo texto noAutomationElement
. Eu não consigo encontrar um método para isso noTextPattern
classe. Então estou tentando usar oValuePattern
mas não tenho certeza se esse é o jeito certo de fazer isso:
ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);
Existe outra maneira de definir o valor do texto?
Outra questão é como posso obter um evento quando o texto foi alterado em umEdit
/ Document
elemento? Eu tentei usar oTextChangedEvent
mas eu não recebo nenhum evento quando altero o texto:
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");
}