diff --git a/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkLabel.cs b/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkLabel.cs index 15b9c32a018..cf93ba9c331 100644 --- a/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkLabel.cs +++ b/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkLabel.cs @@ -69,7 +69,11 @@ public LinkLabel() : base() [SRDescription(nameof(SR.LinkLabelActiveLinkColorDescr))] public Color ActiveLinkColor { - get => _activeLinkColor.IsEmpty ? IEActiveLinkColor : _activeLinkColor; + get => !_activeLinkColor.IsEmpty + ? _activeLinkColor + : Application.IsDarkModeEnabled + ? LinkUtilities.DarkModeActiveLinkColor + : IEActiveLinkColor; set { if (_activeLinkColor != value) @@ -234,9 +238,13 @@ public LinkBehavior LinkBehavior [SRDescription(nameof(SR.LinkLabelLinkColorDescr))] public Color LinkColor { - get => _linkColor.IsEmpty - ? SystemInformation.HighContrast ? SystemColors.HotTrack : IELinkColor - : _linkColor; + get => !_linkColor.IsEmpty + ? _linkColor + : SystemInformation.HighContrast + ? SystemColors.HotTrack + : Application.IsDarkModeEnabled + ? LinkUtilities.DarkModeLinkColor + : IELinkColor; set { if (_linkColor != value) @@ -345,9 +353,13 @@ public override string Text [SRDescription(nameof(SR.LinkLabelVisitedLinkColorDescr))] public Color VisitedLinkColor { - get => _visitedLinkColor.IsEmpty - ? SystemInformation.HighContrast ? LinkUtilities.GetVisitedLinkColor() : IEVisitedLinkColor - : _visitedLinkColor; + get => !_visitedLinkColor.IsEmpty + ? _visitedLinkColor + : SystemInformation.HighContrast + ? LinkUtilities.GetVisitedLinkColor() + : Application.IsDarkModeEnabled + ? LinkUtilities.DarkModeVisitedLinkColor + : IEVisitedLinkColor; set { if (_visitedLinkColor != value) diff --git a/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkUtilities.cs b/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkUtilities.cs index 259e485424b..5b8db64f105 100644 --- a/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkUtilities.cs +++ b/src/System.Windows.Forms/System/Windows/Forms/Controls/Labels/LinkUtilities.cs @@ -110,6 +110,21 @@ public static Color IEVisitedLinkColor } } + /// + /// Gets a light blue link color suitable for dark mode backgrounds. + /// + public static Color DarkModeLinkColor => Color.FromArgb(102, 178, 255); + + /// + /// Gets a light red active link color suitable for dark mode backgrounds. + /// + public static Color DarkModeActiveLinkColor => Color.FromArgb(255, 128, 128); + + /// + /// Gets a light purple visited link color suitable for dark mode backgrounds. + /// + public static Color DarkModeVisitedLinkColor => Color.FromArgb(200, 162, 255); + /// Produces a color for visited links using SystemColors public static Color GetVisitedLinkColor() {