MS UI Automation WinForms:无法在 UI 自动化树上找到网格字段选择器 window
MS UI Automation WinForms: Can't find grid field chooser window on UIA automation tree
我们有一个 Infragistics UltraGrid 控件,您可以为该网格显示一个字段选择器 window。
但是,字段选择器不会显示在 UIA 自动化树上。如果我尝试以编程方式搜索它,那么 UIA 找不到它,如果我尝试使用 UIA Verify 手动查找它也是如此。
但是如果我用UIA Verify hover/focus方式找到字段选择器,它就会显示出来,并且和grid控件一样显示出来
如何使用代码找到控件?为什么它没有出现在自动化树上?
这是 Infragistic。某些组件(如 ultratree、ultragrid 等)在对象树上的位置不正确。
可能的解决方案:
- 尝试从应用程序 window.
的 root 中找到您的控件
- 模拟鼠标和键盘操作。
- 以AutomationElement.FocusedElement获取控制权,然后遍历元素parents
这似乎是 .NET 框架中与从 MDI 子窗体创建的窗体相关的错误。作为解决方法,我已经能够使用 AutomationElement.FromPoint() 函数。
引自 Guy Barker (Microsoft):
“我可以重现您所看到的问题。我将主窗体设置为一个 mdi 容器,并创建了一个子窗体,其 MdiParent 是主窗体。然后我将原始拥有的窗体添加为拥有mdi 子窗体。当我这样做时,我可以在 Inspect 中获取拥有的窗体的详细信息,但该窗体没有出现在 UIA 树视图中。
有趣的是,当我查看所拥有窗体的祖先时,它按预期将 mdi 子窗体列为父窗体。但是由于某种原因,mdi 子窗体不认为拥有的窗体是它的子窗体之一。
我目前没有关于如何解决此问题的任何建议,但如果我确实找到了一些东西,我会 post 在这里发表评论。"
我们有一个 Infragistics UltraGrid 控件,您可以为该网格显示一个字段选择器 window。
但是,字段选择器不会显示在 UIA 自动化树上。如果我尝试以编程方式搜索它,那么 UIA 找不到它,如果我尝试使用 UIA Verify 手动查找它也是如此。
但是如果我用UIA Verify hover/focus方式找到字段选择器,它就会显示出来,并且和grid控件一样显示出来
如何使用代码找到控件?为什么它没有出现在自动化树上?
这是 Infragistic。某些组件(如 ultratree、ultragrid 等)在对象树上的位置不正确。
可能的解决方案:
- 尝试从应用程序 window. 的 root 中找到您的控件
- 模拟鼠标和键盘操作。
- 以AutomationElement.FocusedElement获取控制权,然后遍历元素parents
这似乎是 .NET 框架中与从 MDI 子窗体创建的窗体相关的错误。作为解决方法,我已经能够使用 AutomationElement.FromPoint() 函数。
引自 Guy Barker (Microsoft):
“我可以重现您所看到的问题。我将主窗体设置为一个 mdi 容器,并创建了一个子窗体,其 MdiParent 是主窗体。然后我将原始拥有的窗体添加为拥有mdi 子窗体。当我这样做时,我可以在 Inspect 中获取拥有的窗体的详细信息,但该窗体没有出现在 UIA 树视图中。
有趣的是,当我查看所拥有窗体的祖先时,它按预期将 mdi 子窗体列为父窗体。但是由于某种原因,mdi 子窗体不认为拥有的窗体是它的子窗体之一。
我目前没有关于如何解决此问题的任何建议,但如果我确实找到了一些东西,我会 post 在这里发表评论。"