.NET Automation ControlType.Document: как манипулировать текстом? - PullRequest
3 голосов
/ 15 июля 2011

Как я могу установить текст в элемент ControlType.Document, используя System.Windows.Automation?

ValuePattern недоступен для Document ControlType, а TextPattern не позволяет устанавливать новые значения.

Это не работает:

automationElement.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern)
    .setValue(value);

1 Ответ

2 голосов
/ 12 августа 2011

Я нашел уродливый способ с этим методом:

private void InsertTextIntoAutomationElement(AutomationElement element, string value) {

    object valuePattern = null;

    if (!element.TryGetCurrentPattern(ValuePattern.Pattern, out valuePattern)) {
        element.SetFocus();
        Thread.Sleep(100);

        SendKeys.SendWait("^{HOME}");   // Move to start of control
        SendKeys.SendWait("^+{END}");   // Select everything
        SendKeys.SendWait("{DEL}");     // Delete selection
        SendKeys.SendWait(value);
    } else{
        element.SetFocus();
        ((ValuePattern)valuePattern).SetValue(value);
    }
}
...