C# MS UI自动化WinForms:Can';在UIA自动化树上找不到网格字段选择器窗口
我们有一个Infragistics UltraGrid控件,您可以显示该网格的字段选择器窗口 但是,字段选择器不会显示在UIA自动化树上。如果我尝试以编程方式搜索它,那么UIA找不到它,如果我尝试使用UIA验证手动查找它,也是如此 但是如果我使用UIA验证悬停/焦点模式来查找字段选择器,那么它会显示它,并且以与网格控件相同的形式显示它C# MS UI自动化WinForms:Can';在UIA自动化树上找不到网格字段选择器窗口,c#,.net,winforms,ui-automation,microsoft-ui-automation,C#,.net,Winforms,Ui Automation,Microsoft Ui Automation,我们有一个Infragistics UltraGrid控件,您可以显示该网格的字段选择器窗口 但是,字段选择器不会显示在UIA自动化树上。如果我尝试以编程方式搜索它,那么UIA找不到它,如果我尝试使用UIA验证手动查找它,也是如此 但是如果我使用UIA验证悬停/焦点模式来查找字段选择器,那么它会显示它,并且以与网格控件相同的形式显示它 如何使用代码查找控件?为什么它不显示在自动化树上?它是基础设施。某些组件(如ultratree、ultragrid等)在对象树上的位置顺序不正确 可能的解决
如何使用代码查找控件?为什么它不显示在自动化树上?它是基础设施。某些组件(如ultratree、ultragrid等)在对象树上的位置顺序不正确 可能的解决方案:
- 尝试从应用程序窗口的根目录中查找控件
- 模拟鼠标和键盘动作
- 以AutomationElement.FocusedElement的形式获取控件,然后遍历父元素
有趣的是,当我查看所属形式的祖先时,它将MDI子窗体列为父级。但是由于某种原因,MDI子窗体不认为拥有的表单是其子之一。
对于如何解决这个问题,我目前没有任何建议,但如果我发现了什么,我会在这里发表评论。”它有AutomationID道具吗?嵌套有多深?它是否具有与其他控件相同的controlname、controlid或名称?是的,如果我通过悬停/聚焦模式找到它,它将显示为“正常”。它有ControlType.Window、AutomationId=“ColumnChooserDialog”、Name=“Orders-FieldChooser”。但是如果我搜索那些属性,它不会找到它。。。我对父窗体做了一个FindAll,然后查看它没有显示的子窗体。这听起来像是一个容器窗口。实际控制可能在该窗口下。父窗体-->容器窗口-->控件我添加了一些图像。。。第一个问题是它在UIA Verify和代码中的正常显示方式-字段选择器不会显示在自动化树上。第二个显示在我在UIA Verify中使用悬停/聚焦模式找到它之后,它确实出现在树上。这可能意味着您需要在父窗体上触发用户(交互)操作(鼠标、键盘、单击、悬停等),以便可以创建字段选择器窗口(或通过Infrastics代码为其创建父窗口,该代码将对此操作作出反应,如果它已经存在于其他地方)。没有简单的重新编程代码,很难提供更多帮助