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()
{