Tôi muốn thiết lập một văn bản trên một yếu tố textfield/hộp với Mircosoft UI Automation khuôn khổ, có nghĩa là trên một AutomationElement
từ ControlType.Edit
hay ControlType.Document
.bộ văn bản trên textfield/hộp với khuôn khổ tự động và nhận được sự kiện thay đổi
Hiện nay tôi đang sử dụng TextPattern
để có được văn bản từ một trong những AutomationElements
:
TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();
Nhưng bây giờ tôi muốn thiết lập một văn bản mới trong AutomationElement
. Tôi không thể tìm thấy phương pháp này trong lớp TextPattern
. Vì vậy, tôi đang cố gắng để sử dụng ValuePattern
nhưng tôi không chắc chắn nếu đó là đúng cách để làm điều đó:
ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);
Có một cách khác để thiết lập các giá trị văn bản?
Một câu hỏi khác là làm thế nào tôi có thể nhận được sự kiện khi văn bản được thay đổi trên thành phần Edit
/Document
? Tôi cố gắng để sử dụng TextChangedEvent
nhưng tôi không nhận được bất kỳ sự kiện phát sinh khi thay đổi văn bản:
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");
}