voglio impostare un testo su un elemento textfield/casella di testo con il Mircosoft UI Automation quadro, che significa una AutomationElement
dal ControlType.Edit
o ControlType.Document
.testo Set sul campo di testo/casella di testo con il framework per l'automazione e ottenere l'evento di modifica
Al momento sto usando la TextPattern
per ottenere il testo da uno di questi AutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
Ma ora voglio impostare un nuovo testo nel AutomationElement
. Non riesco a trovare un metodo per questo nella classe TextPattern
. Così sto cercando di utilizzare il ValuePattern
ma non sono sicuro se questo è il modo giusto per farlo:
ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);
C'è un altro modo per impostare il valore di testo?
Un'altra domanda è: come posso ottenere un evento quando il testo è stato modificato su un elemento Edit
/Document
? Ho provato ad usare il TextChangedEvent
ma non ottengo alcun evento licenziato quando si cambia il testo:
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");
}