| File: System\Windows\Forms\Controls\Buttons\RadioButton.RadioButtonAccessibleObject.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Windows.Win32.System.Variant; using Windows.Win32.UI.Accessibility; namespace System.Windows.Forms; public partial class RadioButton { public class RadioButtonAccessibleObject(RadioButton owner) : ControlAccessibleObject(owner) { public override string DefaultAction => this.TryGetOwnerAs(out RadioButton? owner) && owner.AccessibleDefaultActionDescription is { } description ? description : SR.AccessibleActionCheck; internal override bool CanGetDefaultActionInternal => false; public override AccessibleRole Role => this.GetOwnerAccessibleRole(AccessibleRole.RadioButton); public override AccessibleStates State => this.TryGetOwnerAs(out RadioButton? owner) && owner.Checked ? AccessibleStates.Checked | base.State : base.State; internal override bool IsItemSelected => this.TryGetOwnerAs(out RadioButton? owner) && owner.Checked; public override void DoDefaultAction() { if (this.IsOwnerHandleCreated(out RadioButton? owner)) { owner.PerformClick(); } } internal override VARIANT GetPropertyValue(UIA_PROPERTY_ID propertyID) => propertyID switch { UIA_PROPERTY_ID.UIA_HasKeyboardFocusPropertyId => (VARIANT)(this.TryGetOwnerAs(out RadioButton? owner) && owner.Focused), UIA_PROPERTY_ID.UIA_IsKeyboardFocusablePropertyId // This is necessary for compatibility with MSAA proxy: // IsKeyboardFocusable = true regardless the control is enabled/disabled. => VARIANT.True, _ => base.GetPropertyValue(propertyID) }; internal override bool IsPatternSupported(UIA_PATTERN_ID patternId) => patternId switch { var p when p == UIA_PATTERN_ID.UIA_SelectionItemPatternId => true, _ => base.IsPatternSupported(patternId) }; public override string? KeyboardShortcut => this.TryGetOwnerAs(out RadioButton? owner) ? ButtonBaseAccessibleObject.GetKeyboardShortcut(owner, owner.UseMnemonic, PreviousLabel) : null; public override string? Name { get { if (!this.TryGetOwnerAs(out RadioButton? owner)) { return null; } if (owner.AccessibleName is { } name) { return name; } return owner.UseMnemonic ? WindowsFormsUtils.TextWithoutMnemonics(TextLabel) : TextLabel; } } } }