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. Nothing has to be enabled: every control emits its role and state by default.
The AccessibleRole property and the Wisej.Web.AccessibleRole enumeration were removed in 4.1. Code that assigns AccessibleRole no longer compiles; delete the assignment.
Changing the semantic role of a control is no longer supported. The role is defined by the Wisej.NET control.
For the WebARIA extender, which adds the remaining WAI-ARIA properties (aria-describedby, aria-live, and so on) as designer properties, see Accessibility in the Controls section.
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-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 |
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.
What to Expect in the Browser
Roles and ARIA state are generated by the Wisej.NET control in the browser; there is nothing to configure, and no property to set them from server code. AccessibleName and AccessibleDescription remain the two .NET properties for custom accessible text.
Composite controls place their accessibility attributes on the inner input, button, tab, or header rather than on the outer container. This is intentional: it lets assistive technologies interact with the same element the user interacts with. When you inspect a TextBox in the browser's accessibility tree, look for the inner textbox element, not the widget's outer div.
Summary
Wisej.NET 4.1 provides explicit accessibility roles, names, descriptions, and state attributes for common Wisej.NET controls. Configure the standard control properties, and Wisej.NET renders the supported ARIA attributes on the appropriate browser accessibility target.