【发布时间】:2016-05-14 05:32:51
【问题描述】:
我们有一个 Infragistics UltraGrid 控件,您可以为该网格显示一个字段选择器窗口。
但是,字段选择器不会显示在 UIA 自动化树上。如果我尝试以编程方式搜索它,则 UIA 找不到它,如果我尝试使用 UIA 验证手动查找它也是如此。
但是如果我使用 UIA 验证悬停/焦点模式来查找字段选择器,那么它会显示它,并且还会在与网格控件相同的表单下显示它。
如何使用代码找到控件?为什么它没有显示在自动化树上?
【问题讨论】:
-
它有 AutomationID 属性吗?它嵌套多深?它是否具有与其他控件相同的控件名称、控件 ID 或名称?
-
是的,如果我通过悬停/聚焦模式找到它,它会显示为“正常”。它有 ControlType.Window、AutomationId = "ColumnChooserDialog"、Name = "Orders - Field chooser"。但是,如果我搜索那些属性,它不会找到它......我会做一个 FindAll 的父表单并查看它没有显示的子表单。
-
这听起来像一个容器窗口。实际控制可能在那个窗口下。 ParentForm --> 容器窗口 --> 控件
-
我添加了一些图像...第一个是它在 UIA 验证中和代码中的正常显示方式 - 字段选择器只是没有显示在自动化树上。第二个显示,在我在 UIA 验证中使用悬停/聚焦模式找到它之后,它确实出现在树上。
-
请记住,UIA 树是有生命的。这可能意味着您需要在父表单上触发用户(交互)操作(鼠标、键盘、单击、悬停等),以便可以创建字段选择器窗口(或通过对这个动作,如果它已经存在于其他地方)。没有简单的重现代码很难提供更多帮助
标签: c# .net winforms ui-automation microsoft-ui-automation