Accessibility
Introduction
Wisej.NET 4.1 improves the accessibility information emitted by Wisej.NET controls. Controls now expose semantic ARIA roles, accessible names, descriptions, and state attributes that can be consumed by screen readers, browser automation, and accessibility-tree based inspection tools.
The API surface remains the familiar .NET control model. Application code sets properties such as AccessibleName, AccessibleDescription, Text, Enabled, Checked, Selected, Value, or SelectionMode; Wisej.NET renders the appropriate browser accessibility attributes for the control.
The AccessibleRole enumeration and the AccessibleRole property were removed in 4.1.
Changing the semantic role of a control is no longer supported. The role is defined by the Wisej.NET control.
Accessible Name and Description
All Wisej.NET controls derived from Wisej.Web.Control support these accessibility properties:
| .NET property | ARIA output | Applies to |
|---|---|---|
AccessibleName | aria-label | Any Wisej.NET control |
AccessibleDescription | aria-description | Any Wisej.NET control |
These attributes are applied to the control's accessibility target. For simple controls this is usually the control itself. For composite controls, Wisej.NET applies the attributes to the element that users actually interact with.
| .NET control | Accessibility target |
|---|---|
TextBox, MaskedTextBox, and other TextBoxBase controls | Inner text field |
ComboBox | Inner text field when visible; otherwise the combo box |
DateTimePicker | Inner text field |
| Label-wrapped editors | Wrapped editor's accessibility target |
TabPage | Tab button |
DataGridView column header | Header widget |
Wisej.NET also links nearby labels to input controls where possible. When a Label or LinkLabel is immediately before a supported input control in the container, Wisej.NET sets aria-labelledby on the input control's accessibility target.
This automatic label association applies to TextBoxBase controls, ComboBox, DateTimePicker, ListBox, virtual list boxes, and up-down controls such as NumericUpDown and DomainUpDown.
Supported Roles and ARIA Attributes
The following table lists the Wisej.NET controls that have explicit accessibility roles or control-specific ARIA attributes in 4.1.
| .NET control or feature | Role | ARIA attributes |
|---|---|---|
Form, MessageBox and other windows | dialog | aria-modal, title bar labels for window buttons |
Button | button | aria-disabled when disabled |
CheckBox | checkbox | aria-checked, aria-disabled |
RadioButton | radio | aria-checked, aria-disabled |
| Radio button groups | radiogroup | aria-disabled |
TextBox, MaskedTextBox | textbox | aria-label, aria-description, aria-readonly, aria-placeholder, aria-disabled, aria-labelledby |
Multiline TextBox | textbox | aria-multiline, plus text box attributes |
ComboBox | combobox | aria-haspopup, aria-expanded, aria-controls, aria-label, aria-labelledby, aria-disabled |
DateTimePicker | textbox, button | aria-labelledby, aria-label on the open button, and text field accessibility attributes |
ListBox, CheckedListBox, virtual list boxes | listbox | aria-multiselectable, aria-selected, aria-labelledby, aria-disabled |
ListView items | listbox, option | aria-selected, aria-disabled |
DataRepeater items | listbox, option | aria-selected, aria-disabled |
TreeView | tree, treeitem | aria-expanded, aria-selected, aria-owns, aria-multiselectable, aria-disabled |
VirtualTreeView | tree, treeitem | aria-expanded, aria-selected, aria-owns, aria-multiselectable, aria-disabled |
DataGridView | grid, columnheader | aria-multiselectable, aria-disabled |
TabControl, TabPage | tablist, tab, tabpanel | aria-selected, aria-disabled |
Menu, ContextMenu, menu items | menu, menuitem, checkbox, radio | aria-checked, aria-haspopup, aria-expanded, aria-controls, aria-disabled |
MainMenu / menu bar | menubar | Menu item attributes |
ToolBar | toolbar | aria-disabled |
ToolBarButton, ToolBarSplitButton | button, radio where applicable | aria-checked, aria-haspopup, aria-expanded, aria-controls, aria-disabled |
TrackBar | slider | aria-valuemin, aria-valuemax, aria-valuenow, aria-disabled |
NumericUpDown, DomainUpDown | spinbutton | aria-valuemin, aria-valuemax, aria-valuenow, aria-valuetext, aria-labelledby, aria-disabled |
ProgressBar | progressbar | aria-valuemin, aria-valuemax, aria-valuenow, aria-disabled |
HScrollBar, VScrollBar | scrollbar | aria-orientation, aria-valuemax, aria-valuenow, aria-disabled |
GroupBox | group | aria-label, aria-description, aria-disabled |
PictureBox | img | aria-alt, aria-label, aria-description, aria-disabled |
LinkLabel | link | aria-label, aria-description, aria-disabled |
StatusBar | status | aria-label, aria-description from common control properties |
PdfViewer | region | aria-label, aria-description, aria-disabled |
Desktop taskbar area | toolbar | aria-label, aria-disabled |
Controls not listed here can still expose aria-label, aria-description, and aria-disabled through the common Control accessibility support.
ARIA Attribute Reference
Wisej.NET 4.1 supports these ARIA attributes through built-in controls:
| ARIA attribute | Set by |
|---|---|
aria-label | AccessibleName, control-specific labels, tool/container names |
aria-description | AccessibleDescription |
aria-labelledby | Automatic Label / LinkLabel association with supported input controls, and label-wrapped editors |
aria-disabled | Disabled controls |
aria-readonly | Read-only text editor controls |
aria-placeholder | Text editor placeholder/cue text |
aria-checked | CheckBox, RadioButton, checked menu items, radio menu items, toolbar toggle items |
aria-selected | Tabs, list items, tree items, list view items, data repeater items |
aria-expanded | Combo box and select popups, menu popups, tree nodes |
aria-haspopup | Controls and menu items that open a popup |
aria-controls | Controls that own or open a popup/list/menu |
aria-owns | Tree items with child containers |
aria-multiselectable | Multi-select lists, trees, virtual trees, and grids |
aria-multiline | Multiline text boxes |
aria-modal | Modal windows |
aria-orientation | Horizontal and vertical scroll bars |
aria-valuemin | TrackBar, NumericUpDown, DomainUpDown, ProgressBar |
aria-valuemax | TrackBar, NumericUpDown, DomainUpDown, ProgressBar, scroll bars |
aria-valuenow | TrackBar, NumericUpDown, DomainUpDown, ProgressBar, scroll bars |
aria-valuetext | Up-down controls that expose textual values |
aria-alt | PictureBox text |
Automation and AI Inspection
The same accessibility information is useful for browser automation and AI-assisted inspection. Tools such as Playwright can identify controls by role, name, and state instead of relying on generated DOM structure or CSS classes.
Examples:
getByRole("button", { name: "Save" })getByRole("textbox", { name: "Customer Name" })getByRole("tab", { name: "Orders" })
Wisej.NET also applies automation IDs to the accessibility target when a control exposes one, so automation can use both semantic lookup and deterministic element identifiers.
Implementation Notes
The accessibility implementation is primarily in the Wisej.NET client control layer and the underlying widget layer. The important application-facing behavior is that roles and ARIA state are generated by the Wisej.NET control, while AccessibleName and AccessibleDescription remain the primary .NET properties for custom accessible text.
Composite controls may place accessibility attributes on an inner input, button, tab, or header rather than on the outer container. This is intentional and helps assistive technologies interact with the same element the user interacts with.
Summary
Wisej.NET 4.1 provides explicit accessibility roles, names, descriptions, and state attributes for common Wisej.NET controls. The documentation should be read from the .NET control perspective: developers configure standard Wisej.NET control properties, and Wisej.NET renders the supported ARIA attributes for the appropriate browser accessibility target.