establezca texto en el campo de texto / cuadro de texto con el marco de automatización y obtenga el evento de cambio
Quiero establecer un texto en un campo de texto / elemento de cuadro de texto con MircosoftAutomatización de la interfaz de usuario marco, que significa en unaAutomationElement
desde elControlType.Edit
oControlType.Document
.
En este momento estoy usando elTextPattern
para obtener el texto de uno de estosAutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
Pero ahora quiero poner un nuevo texto en elAutomationElement
. No puedo encontrar un método para esto en elTextPattern
clase. Así que estoy tratando de usar elValuePattern
pero no estoy seguro si esa es la forma correcta de hacerlo:
ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);
¿Hay alguna otra manera de establecer el valor del texto?
Otra pregunta es cómo puedo obtener un evento cuando el texto se cambió en unaEdit
/ Document
¿elemento? Traté de usar elTextChangedEvent
pero no recibo ningún evento al cambiar el 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");
}