在我的C#Winforms应用程序中,我很少使用热键设置标签控件。(例如:& Name)。我们正在使用JAWS屏幕阅读器。 Label.Text始终给出"& Name"。有没有办法在没有热键的情况下获取标签文本('&')?我不能取代'&'使用String.empty,因为实际的'&'标签很少。需要它。
答案 0 :(得分:0)
你能举例说明'&'需要吗?
TrimStart将从字符串https://msdn.microsoft.com/en-us/library/system.string.trimstart(v=vs.110).aspx
的开头删除字符答案 1 :(得分:0)
正如我在之前的评论中提到的,这是一个可访问性问题。以下自定义Label
公开了一个新的string
属性AccessibleValue
,可以将其设置为AccessibleObject将作为其值返回的文本。
我不知道这是否适用于JAWS屏幕阅读器,但在使用Inspect工具时确实显示了自定义值。
public class AccessibleLabel : Label
{
protected override AccessibleObject CreateAccessibilityInstance()
{
return new LabelAccessibleObject(this);
}
public string AccessibleValue { get; set; }
private class LabelAccessibleObject : ControlAccessibleObject
{
private AccessibleLabel myowner;
public LabelAccessibleObject(AccessibleLabel owner)
: base(owner)
{
this.myowner = owner;
}
public override AccessibleRole Role
{
get
{
AccessibleRole accessibleRole = base.Owner.AccessibleRole;
if (accessibleRole != AccessibleRole.Default)
{
return accessibleRole;
}
return AccessibleRole.StaticText;
}
}
public override string Value
{
get
{
if (string.IsNullOrEmpty(myowner.AccessibleValue))
{
return base.Value;
}
else
{
return myowner.AccessibleValue;
}
}
set
{
base.Value = value;
}
}
}
}
答案 2 :(得分:0)
简单的方法是使用 AccessibleObject.Name 属性。
Ex:String text = label1.AccessibleObject.Name;