我们有一个Infragistics UltraGrid控件,您可以显示该网格的字段选择器窗口。
但是,现场选择器不会显示在UIA自动化树上。如果我尝试以编程方式搜索它,那么UIA找不到它,如果我尝试使用UIA验证手动查找它。
但是如果我使用UIA验证悬停/聚焦模式来查找字段选择器,那么它会显示它,并以与网格控件相同的形式显示它。
如何使用代码找到控件?为什么它不会显示在自动化树上?
答案 0 :(得分:1)
这似乎是.NET框架中与从MDI子窗体创建的窗体相关的错误。作为一种解决方法,我已经能够使用AutomationElement.FromPoint()函数。
来自Guy Barker(微软)的引言:
"我可以重现您所看到的问题。我将main设置为mdi容器,并创建了一个子窗体,其MdiParent是主窗体。然后我添加了原始拥有的表单,由mdi子表单拥有。当我这样做时,我可以在Inspect中获取所拥有的表单的详细信息,但该表单没有出现在UIA树视图中。
有趣的是,当我查看自有表单的祖先时,它会将mdi子表单列为预期的父表单。但由于某种原因,mdi子形式并不认为拥有的形式是其子女之一。
我目前没有任何关于如何解决这个问题的建议,但如果我找到了什么,我会在这里发表评论。"
答案 1 :(得分:0)
它是虚无主义的。某些组件(如ultratree,ultragrid等)在对象树上的位置不正确。
可能的解决方案: