[InlineData("disabled")] // The form has disabled control public void FormAccessibleObject_RaiseFocusEvent_WhenFormGetsFocus_WithoutActiveControl(string controlCase) { using Form form = new FocusEventsCounterForm(); using Control control = controlCase switch { "null" => null, "invisible" => new Button() { Visible = false }, "disabled" => new Button() { Enabled = false }, _ => null }; form.Controls.Add(control); form.CreateControl(true); var accessibleObject = (FocusEventsCounterFormAccessibleObject)form.AccessibilityObject; Assert.NotNull(accessibleObject); Assert.Equal(0, accessibleObject.RaiseAutomationFocusEventCallsCount); Assert.True(form.IsHandleCreated); form.Visible = true; form.Focus(); Assert.Null(form.ActiveControl); Assert.Equal(1, accessibleObject.RaiseAutomationFocusEventCallsCount); }
public void FormAccessibleObject_RaiseFocusEvent_WhenFormGetsFocus_WithActiveControl() { using Form form = new FocusEventsCounterForm(); using Button control = new(); form.Controls.Add(control); form.CreateControl(true); var accessibleObject = (FocusEventsCounterFormAccessibleObject)form.AccessibilityObject; Assert.NotNull(accessibleObject); Assert.Equal(0, accessibleObject.RaiseAutomationFocusEventCallsCount); Assert.True(form.IsHandleCreated); form.Visible = true; control.Visible = true; form.Focus(); Assert.NotNull(form.ActiveControl); // The child control gets the focus changed event instead of the form. // Native control does it itself, so a screen reader should focus on the inner control. Assert.Equal(0, accessibleObject.RaiseAutomationFocusEventCallsCount); }