Skip to main content

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.

Breaking change

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 propertyARIA outputApplies to
AccessibleNamearia-labelAny Wisej.NET control
AccessibleDescriptionaria-descriptionAny 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 controlAccessibility target
TextBox, MaskedTextBox, and other TextBoxBase controlsInner text field
ComboBoxInner text field when visible; otherwise the combo box
DateTimePickerInner text field
Label-wrapped editorsWrapped editor's accessibility target
TabPageTab button
DataGridView column headerHeader 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 featureRoleARIA attributes
Form, MessageBox and other windowsdialogaria-modal, title bar labels for window buttons
Buttonbuttonaria-disabled when disabled
CheckBoxcheckboxaria-checked, aria-disabled
RadioButtonradioaria-checked, aria-disabled
Radio button groupsradiogrouparia-disabled
TextBox, MaskedTextBoxtextboxaria-label, aria-description, aria-readonly, aria-placeholder, aria-disabled, aria-labelledby
Multiline TextBoxtextboxaria-multiline, plus text box attributes
ComboBoxcomboboxaria-haspopup, aria-expanded, aria-controls, aria-label, aria-labelledby, aria-disabled
DateTimePickertextbox, buttonaria-labelledby, aria-label on the open button, and text field accessibility attributes
ListBox, CheckedListBox, virtual list boxeslistboxaria-multiselectable, aria-selected, aria-labelledby, aria-disabled
ListView itemslistbox, optionaria-selected, aria-disabled
DataRepeater itemslistbox, optionaria-selected, aria-disabled
TreeViewtree, treeitemaria-expanded, aria-selected, aria-owns, aria-multiselectable, aria-disabled
VirtualTreeViewtree, treeitemaria-expanded, aria-selected, aria-owns, aria-multiselectable, aria-disabled
DataGridViewgrid, columnheaderaria-multiselectable, aria-disabled
TabControl, TabPagetablist, tab, tabpanelaria-selected, aria-disabled
Menu, ContextMenu, menu itemsmenu, menuitem, checkbox, radioaria-checked, aria-haspopup, aria-expanded, aria-controls, aria-disabled
MainMenu / menu barmenubarMenu item attributes
ToolBartoolbararia-disabled
ToolBarButton, ToolBarSplitButtonbutton, radio where applicablearia-checked, aria-haspopup, aria-expanded, aria-controls, aria-disabled
TrackBarslideraria-valuemin, aria-valuemax, aria-valuenow, aria-disabled
NumericUpDown, DomainUpDownspinbuttonaria-valuemin, aria-valuemax, aria-valuenow, aria-valuetext, aria-labelledby, aria-disabled
ProgressBarprogressbararia-valuemin, aria-valuemax, aria-valuenow, aria-disabled
HScrollBar, VScrollBarscrollbararia-orientation, aria-valuemax, aria-valuenow, aria-disabled
GroupBoxgrouparia-label, aria-description, aria-disabled
PictureBoximgaria-label, aria-description, aria-disabled
LinkLabellinkaria-label, aria-description, aria-disabled
StatusBarstatusaria-label, aria-description from common control properties
PdfViewerregionaria-label, aria-description, aria-disabled
Desktop taskbar areatoolbararia-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 attributeSet by
aria-labelAccessibleName, control-specific labels, tool/container names
aria-descriptionAccessibleDescription
aria-labelledbyAutomatic Label / LinkLabel association with supported input controls, and label-wrapped editors
aria-disabledDisabled controls
aria-readonlyRead-only text editor controls
aria-placeholderText editor placeholder/cue text
aria-checkedCheckBox, RadioButton, checked menu items, radio menu items, toolbar toggle items
aria-selectedTabs, list items, tree items, list view items, data repeater items
aria-expandedCombo box and select popups, menu popups, tree nodes
aria-haspopupControls and menu items that open a popup
aria-controlsControls that own or open a popup/list/menu
aria-ownsTree items with child containers
aria-multiselectableMulti-select lists, trees, virtual trees, and grids
aria-multilineMultiline text boxes
aria-modalModal windows
aria-orientationHorizontal and vertical scroll bars
aria-valueminTrackBar, NumericUpDown, DomainUpDown, ProgressBar
aria-valuemaxTrackBar, NumericUpDown, DomainUpDown, ProgressBar, scroll bars
aria-valuenowTrackBar, NumericUpDown, DomainUpDown, ProgressBar, scroll bars
aria-valuetextUp-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.