Setting CustomColors in a ColorDialog

If you have an array of colors, you can translate them using Linq:

colorDialog1.CustomColors = ThemeColors.Select(x => ColorTranslator.ToOle(x)).ToArray()

The ThemeColors array would be something like this:

public static Color[] ThemeColors
{
   get => new[]
   {
      Color.FromArgb(255, 185, 0),
      Color.FromArgb(231, 72, 86),
      Color.FromArgb(0, 120, 215),
      Color.FromArgb(0, 153, 188),
      Color.DarkOrange
   }
}

Note: Don't forget to add:

using System.Linq;

You need to use OLE colors. The simplist way to achieve this is using the built in ColorTranslator object, e.g.

colorDialog1.CustomColors = new int[] { 
                                        ColorTranslator.ToOle(Color.Blue), 
                                        ColorTranslator.ToOle(Color.Red)
                                      };
colorDialog1.ShowDialog(); 

If you need to convert from HTML colors, you can also use the ColorTranslator.FromHtml method, e.g.

colorDialog1.CustomColors = new int[]
                                {
                                    ColorTranslator.ToOle(Color.Blue), 
                                    ColorTranslator.ToOle(ColorTranslator.FromHtml("#FF0000"))
                                };

Tags:

C#

Colordialog