RichTextBox — доступное имя

#c# #winforms

Вопрос:

Я пытаюсь улучшить доступность приложения WinForms.

При этом я наткнулся на то, что, как мне кажется, может быть ошибкой RichTextBox .

Независимо от того, на что я его установил AccessibleName , он читается как «Расширенное управление редактированием», если только там нет такого Label же Parent , с более низким TabIndex значением и вставлен в родительскую Controls коллекцию прямо перед RichTextBox .

Хотя это может быть просто сделать, почему RichTextBox контроль игнорируется AccessibleName ? Есть ли другие способы исправить это, кроме добавления метки к одному и тому же родителю? Это не всегда идеальное решение.

Комментарии:

1. AccessibleName , как и другие доступные свойства, принадлежит классу управления, а не классу RichTextBox. Автоматизация пользовательского интерфейса возвращает свойство AccessibleName as AutomationElement.Name (когда AccessibleName задано, в противном случае что TextPattern.GetText() возвращается). — AutomationId обычно это название элемента управления. Возможно, вам захочется установить это AccessibleDescription свойство. —Кроме того, укажите . Сетевая версия, которую вы используете, когда устанавливается это свойство и что его устанавливает.

2.Версия .NET: .NET 4.8. Свойство задано так, как показано в диалоговом окне. Можете ли вы подробнее остановиться на TextPattern этом и его значимости в этом сценарии? RichTextBox является a Control , так почему же справедливо предположить, что он должен следовать правилам, отличным от всего остального?

3. Доступность может быть проверена с помощью автоматизации пользовательского интерфейса. Элемент автоматизации возвращает все значения, заданные свойствами специальных возможностей: AccessibleName => AutomationElement.Name , AccessibleId => [UI Element Name] , HelpText => AccessibleDescription . Вы можете проверить, какие средства специальных возможностей считываются с ваших элементов управления. — Класс RichTextBox не следует никаким пользовательским правилам, поскольку, как уже упоминалось, он вообще не учитывает доступность. Класс управления выполняет, частично в зависимости от AccessibilityImprovements уровня. Информация о доступном объекте создается, когда элемент управления создает свой дескриптор.

4. Я не знаю, какое свойство задано, поскольку отображается диалоговое окно. Ни что …это читается как «Богатый контроль редактирования» подразумевает: что его читает? Есть ли у вас программное обеспечение , которое в какой-то момент занимается доступом, который читает/озвучивает Rich Edit control ? Элемент управления .net Framework 4.8 RichTextBox не является классом расширенного редактирования Win32. — Попробуйте установить AccessibleDescription свойство.

5. Если AccessibleName свойство не задано, поскольку класс управления установлен ControlStyles.UseTextForAccessibility CreateParams , в качестве элемента управления используется текст AccessibleName элемента управления , следовательно, это то, что автоматизация пользовательского интерфейса возвращает в качестве значения AutomationElement.Name свойства. MSAA вместо этого вернет пустую строку » как Name «и текст элемента управления «как Value «. Как Автоматизация пользовательского интерфейса, так и MSAA AccessibleDescription одинаково считывают значение свойства.