내 C# Winforms 응용 프로그램에서는 단축키 설정이 거의 없습니다 (예 : & 이름). 우리는 JAWS 스크린 리더를 사용하고 있습니다. Label.Text는 항상 "& 이름"을 제공합니다. 바로 가기 키가없는 라벨 텍스트를 가져 오는 방법이 있습니까 ('&')? 실제로 '&'레이블이 거의 필요 없기 때문에 '&'을 String.empty로 바꿀 수 없습니다.C#에서 단축키 ('&')없이 레이블 텍스트 가져 오기
0
A
답변
0
'&'이 필요한 경우를 예로들 수 있습니까?
TrimStart 나는 내 이전 코멘트에서 언급 한 바와 같이 문자가 문자열 https://msdn.microsoft.com/en-us/library/system.string.trimstart(v=vs.110).aspx
0
의 시작을 형성 제거,이 접근성 문제입니다. 다음 사용자 정의 Label
은 AccessibleObject가 값으로 반환 할 텍스트로 설정할 수있는 새로운 string
속성 AccessibleValue
을 노출합니다.
JAWS 화면 판독기에서 작동하는지 여부는 알 수 없지만 검사 도구를 사용할 때 사용자 지정 값이 표시되었습니다.
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;
}
}
}
}
0
쉬운 방법은 AccessibleObject.Name 재산을 사용하는 것입니다.
예 : String text = label1.AccessibleObject.Name;
그리고이 레이블에는 이중 &&가 있어야합니다. 힌트 : regexp. – Steve
[가능한 문자열에서 액셀러레이터 문자를 제거 할 수 있습니까?] (http://stackoverflow.com/questions/3700612/how-can-i-remove-accelerator-characters-from-a-string) –
이것은 가능한 복제입니다. 접근성 문제. 화면 판독기가 앰퍼샌드 문자를 읽고 있다는 설명을 기반으로 가정합니다. 독자가 제시하는 것은 자체 통제하에 있습니다. WinForms 컨트롤은 레거시 Accessibility.IAccessible 모델을 지원합니다. 앰퍼샌드없이 텍스트를 사용할 수 있도록 'Value' 속성을 재정 의하여 사용자 지정 ControlAccessibleObject를 제공하는 사용자 지정 레이블을 만들려고 할 수 있습니다. – TnTinMn