#c# #winforms
Вопрос:
Я пытаюсь улучшить доступность приложения WinForms.
При этом я наткнулся на то, что, как мне кажется, может быть ошибкой RichTextBox
.
Независимо от того, на что я его установил AccessibleName
, он читается как «Расширенное управление редактированием», если только там нет такого Label
же Parent
, с более низким TabIndex
значением и вставлен в родительскую Controls
коллекцию прямо перед RichTextBox
.
Хотя это может быть просто сделать, почему RichTextBox
контроль игнорируется AccessibleName
? Есть ли другие способы исправить это, кроме добавления метки к одному и тому же родителю? Это не всегда идеальное решение.
Комментарии:
1.
AccessibleName
, как и другие доступные свойства, принадлежит классу управления, а не классу RichTextBox. Автоматизация пользовательского интерфейса возвращает свойствоAccessibleName
asAutomationElement.Name
(когдаAccessibleName
задано, в противном случае чтоTextPattern.GetText()
возвращается). —AutomationId
обычно это название элемента управления. Возможно, вам захочется установить этоAccessibleDescription
свойство. —Кроме того, укажите . Сетевая версия, которую вы используете, когда устанавливается это свойство и что его устанавливает.2.Версия .NET: .NET 4.8. Свойство задано так, как показано в диалоговом окне. Можете ли вы подробнее остановиться на
TextPattern
этом и его значимости в этом сценарии?RichTextBox
является aControl
, так почему же справедливо предположить, что он должен следовать правилам, отличным от всего остального?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
«. Как Автоматизация пользовательского интерфейса, так и MSAAAccessibleDescription
одинаково считывают значение свойства.