Quiero configurar un texto en un elemento de campo de texto/cuadro de texto con la UI Automation marco Mircosoft , eso significa que en un AutomationElement
del ControlType.Edit
o ControlType.Document
.conjunto de texto en el campo de texto/cuadro de texto con el marco de la automatización y obtener el evento de cambio
Por el momento estoy usando el TextPattern
para obtener el texto de uno de estos AutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
Pero ahora quiero fijar un nuevo texto en el AutomationElement
. No puedo encontrar un método para esto en la clase TextPattern
. Así que estoy tratando de utilizar el ValuePattern
pero no estoy seguro de 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 de texto?
Otra pregunta es ¿cómo puedo obtener un evento cuando el texto fue cambiado en un elemento Edit
/Document
? He intentado utilizar el TextChangedEvent
pero yo no recibo ningún evento despedido cuando se cambia 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");
}