> For the complete documentation index, see [llms.txt](https://docs.wisej.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.wisej.com/docs/welcome/whats-new-in-4.1/accessibility.md).

# 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.

{% hint style="danger" %}
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.
{% endhint %}

## 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.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.wisej.com/docs/welcome/whats-new-in-4.1/accessibility.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
