c# – 自定义控件的AccessibleObject实现
发布时间:2020-12-15 07:53:13 所属栏目:百科 来源:网络整理
导读:我有一个非常简单的 Windows窗体控件库,我遇到了实现辅助功能的问题. 我有一个非常简单的表单,其成员包含我的库的控件列表,我已经覆盖了CreateAccessibilityInstance: public partial class Form1 : Form{ protected override AccessibleObject CreateAcces
我有一个非常简单的
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方法以返回自定义可访问对象,它什么也没有显示. 为什么我的控件不在树上? 我不知道我错过了什么. 解决方法
覆盖AccessibleForm类中的名称,值,角色
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |