Acrescentar Conteúdo a um Text Box Utilizando Automação de IU
Este tópico contém código de exemplo que demonstra como usar Para inserir texto em um caixa de texto Simples-Linha.Um método alternativo é fornecido para controles de várias linhas e rich Texto onde não é aplicável.Para efeito de comparação, o exemplo também demonstra como utilizar métodos Win32 para alcançar os mesmos resultados.
Exemplo
O exemplo a seguir percorre uma seqüência de controles de texto de uma aplicação alvo.Cada controle de texto é testado para verificar se um ValuePattern Objeto pode ser obtido-lo usando o TryGetCurrentPattern(AutomationPattern, Objeto%) Método.Se o controle de texto oferecer suporte ValuePatterno [M:System.Windows.Automation.ValorPadrão.SetValor(System.Cadeia de Caracteres)] Método é usado para inserir uma seqüência de caracteres definida pelo usuário em o controle de texto.Caso contrário, o SendTeclasSendWait(String) Método é usado.
SetValueWithUIAutomation(string s)
{
(AutomationElement control textControls)
{
InsertTextUsingUIAutomation(control, s);
}
}
InsertTextUsingUIAutomation(AutomationElement element,
string value)
{
{
(value == )
ArgumentNullException(
);
(element == )
ArgumentNullException(
);
(!element.Current.IsEnabled)
{
InvalidOperationException(
+ element.Current.AutomationId.ToString()
+ );
}
(!element.Current.IsKeyboardFocusable)
{
InvalidOperationException(
+ element.Current.AutomationId.ToString()
+ );
}
object valuePattern = ;
(!element.TryGetCurrentPattern(
ValuePattern.Pattern, valuePattern))
{
feedbackText.Append()
.Append(element.Current.AutomationId.ToString())
.Append()
.AppendLine();
element.SetFocus();
Thread.Sleep(100);
SendKeys.SendWait();
SendKeys.SendWait();
SendKeys.SendWait();
SendKeys.SendWait(value);
}
{
feedbackText.Append()
.Append(element.Current.AutomationId.ToString())
.Append(())
.AppendLine();
element.SetFocus();
((ValuePattern)valuePattern).SetValue(value);
}
}
(ArgumentNullException exc)
{
feedbackText.Append(exc.Message);
}
(InvalidOperationException exc)
{
feedbackText.Append(exc.Message);
}
{
Feedback(feedbackText.ToString());
}
}
SetValueWithUIAutomation( s )
control AutomationElement
control textControls
InsertTextWithUIAutomation(control, s)
control
InsertTextWithUIAutomation( _
element AutomationElement, value )
value
ArgumentNullException( _
)
element
ArgumentNullException( _
)
Not element.Current.IsEnabled
InvalidOperationException( _
+ _
element.Current.AutomationId.ToString() + _
+ vbLf + vbLf)
Not element.Current.IsKeyboardFocusable
InvalidOperationException( _
+ _
element.Current.AutomationId.ToString() + _
+ vbLf + vbLf)
targetValuePattern Object =
Not element.TryGetCurrentPattern(ValuePattern.Pattern, targetValuePattern)
feedbackText.Append() _
.Append(element.Current.AutomationId.ToString()) _
.Append(). _
AppendLine().AppendLine()
element.SetFocus()
Thread.Sleep(100)
SendKeys.SendWait() ' Move to start of control
SendKeys.SendWait() ' everything
SendKeys.SendWait() ' Delete selection
SendKeys.SendWait(value)
feedbackText.Append() _
.Append(element.Current.AutomationId.ToString()) _
.Append() _
.AppendLine().AppendLine()
element.SetFocus()
valueControlPattern ValuePattern = _
DirectCast(targetValuePattern, ValuePattern)
valueControlPattern.SetValue(value)
exc ArgumentNullException
feedbackText.Append(exc.Message)
exc InvalidOperationException
feedbackText.Append(exc.Message)
Feedback(feedbackText.ToString())