【发布时间】:2016-07-23 14:11:15
【问题描述】:
我有一个非常简单的 Windows 窗体控件库,但在实现可访问性时遇到了问题。
我有一个非常简单的表单,其中包含一个包含我的库的控件列表的成员,并且我已经覆盖了 CreateAccessibilityInstance:
public partial class Form1 : Form
{
protected override AccessibleObject CreateAccessibilityInstance()
{
return new AccessibleForm(this);
}
public MyContainer MyContainer;
public Form1()
{
InitializeComponent();
MyContainer = new MyContainer();
MyContainer.Controls.Add(new MyButton());
}
}
AccessibleForm 类如下所示:
public class AccessibleForm: Control.ControlAccessibleObject
{
private Form1 form1;
public AccessibleForm(Form1 owner):base(owner)
{
this.form1 = owner;
}
public override AccessibleObject GetChild(int index)
{
return this.form1.MyContainer.Controls[index].AccessibilityObject;
}
public override int GetChildCount()
{
return this.form1.MyContainer.Controls.Count() ;
}
}
MyContanier 和 MyButton 类继承自 BaseControl,它们非常简单:
public class BaseControl : Control
{
protected override AccessibleObject CreateAccessibilityInstance()
{
return new AccessibleObject();
}
}
public class MyContainer:BaseControl
{
public List<BaseControl> Controls { get; set; }
public MyContainer()
{
this.Controls = new List<BaseControl>();
}
}
public class MyButton:BaseControl
{
}
关键是当我运行 UIVerify 工具来查看我的控件是否生成了正确的结构时,我看不到它们:
另外一点是,如果我以这种方式从 AccessibleForm 类中修改 GetChild 方法:
public override AccessibleObject GetChild(int index)
{
return new AccessibleObject();
////return this.form1.MyContainer.Controls[index].AccessibilityObject;
}
我可以在 UIVerify 上看到一个节点:
但是修改 GetChild 方法以返回一个自定义的可访问对象,它什么也没显示。
为什么我的控件不在树上?
我不知道我错过了什么。
【问题讨论】:
-
您能否分享一些源代码示例,以免重新输入您在此处发布的内容?
标签: c# winforms coded-ui-tests