【发布时间】:2012-05-23 12:43:24
【问题描述】:
我想使用 Mircosoft UI Automation 框架在文本字段/文本框元素上设置文本,这意味着在来自 ControlType.Edit 或 ControlType.Document 的 AutomationElement 上。
目前我正在使用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 / 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");
}
【问题讨论】:
标签: c# events user-interface input ui-automation