Mircosoft UIAutomationフレームワークを使用してtextfield/textbox要素にテキストを設定したいのですが、これは、またはAutomationElement
からのことを意味します。ControlType.Edit
ControlType.Document
現在、私はTextPattern
これらのいずれかからテキストを取得するためにを使用していますAutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
しかし今、私はに新しいテキストを設定したいと思いますAutomationElement
。TextPattern
クラスでこのためのメソッドが見つかりません。だから私は使用しようとしていますが、ValuePattern
それが正しい方法かどうかはわかりません:
ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);
テキスト値を設定する他の方法はありますか?
Edit
もう1つの質問は、 /Document
要素のテキストが変更されたときにイベントを取得するにはどうすればよいですか?使用しようとしましたTextChangedEvent
が、テキストを変更してもイベントが発生しません。
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");
}