2016-02-16 6 views
0

Это вопрос с двумя частями:
1) Я пытаюсь найти родителя элемента таким образом, чтобы он мог быть любым великим родителем текущего элемента на основе определенных атрибутов, таких как controlType. Код:TestStack White GetParent Element

control.GetParent<IUIItem>(); 

Приведенный выше код дает мне непосредственный родительский элемент «управления», а не пособие родителя, что я хочу, как

control.GetParent<Tab>(); 

Из этого я узнал, что это требует API знать тип родительского элемента перед рукой.
2) Так что я попытался создать своего рода Полезность моей относительно этого:

public static IUIItem GetParent(ControlType type, IUIItem control) 
     { 
      while (true) { 
       control = control.GetParent<IUIItem>(); 
       Console.WriteLine(control.GetType()); 
       if (control.GetType().IsInstanceOfType(type)) { 
        Console.WriteLine("Found match"); 
        break; 
       } 
      } 
      return control; 
     } 

Таким образом, в описанном выше способе Util, когда я пытаюсь получить тип родительского элемента он возвращается что-то вроде этого: Castle.Proxies.TabProxy Но я ожидал, что GetType вернет мне «Tab» в качестве типа элемента управления. Не уверен, почему он возвращает Castle.Proxies.TabProxy. Мне было интересно, есть ли способ идентифицировать тип элемента управления таким образом, чтобы его можно было отнести к соответствующему типу Control. Я новичок в C#

ответ

0

GetType возвращает System.Type элемента управления, а не тип фактического управления. Вы можете узнать тип управления контроля, как это:

AutomationElement element = control.AutomationElement; 
ControlType elementType = element.Current.ControlType; 

Для получения Типа управления родителя вы можете использовать этот код:

AutomationElement parent = TreeWalker.RawViewWalker.GetParent(control.AutomationElement); 
ControlType parentType = parent.Current.ControlType; 
+0

вы сделали мой день mate..Thnx много , –

 Смежные вопросы

  • Нет связанных вопросов^_^