Skip to content

Testing result of Pull Request #14919: Add a per-state stroke model for Net11 editable-control borders #14997

Description

@Olina-Zhang

Testing Results

Performed validation of the TextBoxBase modern field stroke implementation (TextBox, MaskedTextBox, and RichTextBox) under VisualStylesMode.Net11 for GH PR: #14919

State transitions behave as expected:

  • Rest state displays a distinct Hover state when the pointer moves over the control.
  • Focused state displays the accent-colored bottom edge as designed.
  • ReadOnly controls do not enter a Hover visual state.
  • Disabled controls remain visually unchanged regardless of mouse interaction.
  • State precedence appears consistent with the documented model:
    Disabled > Focused > ReadOnly > Hover > Rest.

So far, have three design feedbacks and one issue:

Design Feedback

Feedback 1: Rest State Bottom Edge Could Better Align with the Focus-State Geometry

In the Rest, ReadOnly, and Disabled states, the bottom edge extends upward into rounded corner shapes at both ends, making the lower border visually more prominent than the other sides.

Image

Suggestion:
Consider using the same straight bottom-edge geometry as the Focus state.
Remove the upward curved corner extensions on the left and right sides of the bottom border.
Consider reducing the bottom stroke thickness by one pixel so that it matches the visual width of the top border.
Maintain the visual distinction through color contrast rather than additional border thickness or corner geometry.

Feedback 2: Focus Bottom Edge Appears Slightly Too Thick

The focus indicator is now consistent with the Windows 11 style and no longer exhibits the previously observed corner emphasis.
However, the accent-colored bottom edge still appears slightly heavier than necessary and draws significant visual attention when compared to the rest of the border.
TextBox:

Image

Suggestion:
Consider reducing the focus indicator thickness by one pixel.
This would preserve the focus visibility while creating a lighter and more balanced appearance.

Feedback 3: Hover State Reduces the Apparent Editable Area - Improved

When entering the Hover state, the border becomes visually heavier and gives the impression that the editable surface area has become smaller. Although the actual client area does not change, the stronger border causes the inner editable region to appear slightly reduced compared to the Rest state.

Suggestion: Consider keeping the editable surface visually consistent between Rest and Hover states and expressing Hover primarily through border color, border contrast. This may reduce the perception that the control's usable area changes when the pointer moves over it.

Image

Feedback 4: ReadOnly and Disabled States Introduce a Visible Inner Border

In both ReadOnly and Disabled states, an obvious inner border appears between the outer border and the text surface.

Observations:
• The inner border creates a double-border appearance.
• The editable/text surface appears visually inset.
• Compared to the Rest state, the additional inner outline slightly reduces the apparent content area.
Suggestion:
• Consider reducing the contrast of the inner border or removing it entirely.
• The ReadOnly and Disabled states may appear cleaner if the visual distinction is expressed primarily through surface and text colors rather than an additional inner outline.
• This could also help maintain a more consistent visual structure across all states.

When setting a backcolor or padding for controls, observe this result obviously:
Custom BackColor setting:
Image
Setting Padding to 20:
Image

Issue 1: Both design time and runtime , no border existing when BolderStyle is FixedSingle for TextBox/MaskedTextBox/RichTextBox controls

VisualStylesMode = NET11:

Image

VisualStylesMode = Classic:

Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

internal-validationFindings identified during internal validation and testing before public issue tracking

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions