public static void UpdateControlTheme(ToolStrip menu) { if (ThemeMessageFilter.Instance == null) { ThemeMessageFilter filter = new ThemeMessageFilter(); ThemeMessageFilter.Instance.ThemeChanged += OnThemeChanged; } if (Environment.OSVersion.Version.Major >= 6) { UXThemeMenuRenderer renderer = new UXThemeMenuRenderer(); if (menu.Renderer is ToolStripProfessionalRenderer) { menu.Disposed += OnThemedMenuDisposed; ThemedMenus.Add(menu, renderer); if (NativeMethods.ThemesActive) menu.Renderer = renderer; } } foreach (ToolStripItem item in menu.Items) { ToolStripMenuItem toolStripItem = item as ToolStripMenuItem; if (toolStripItem != null) UpdateControlTheme(toolStripItem); } }
/// <summary> /// Updates the control's theme to fit in with the latest Windows visuals. /// </summary> /// <param name="menu">The tool strip control to set the theme on.</param> public static void ApplyTheme(ToolStrip menu) { //Register for Theme changed messages if (ThemeMessageFilter.Instance == null) { ThemeMessageFilter filter = new ThemeMessageFilter(); filter.ThemeChanged += OnThemeChanged; } if (Environment.OSVersion.Version.Major >= 6) { //Assign our themed renderer for non-custom renderers UXThemeMenuRenderer renderer = new UXThemeMenuRenderer(); if (menu.Renderer is ToolStripProfessionalRenderer) { menu.Disposed += OnThemedMenuDisposed; ThemedMenus.Add(menu, renderer); if (Active) { menu.Renderer = renderer; } } } foreach (ToolStripItem item in menu.Items) { ToolStripMenuItem toolStripItem = item as ToolStripMenuItem; if (toolStripItem != null) { ApplyTheme(toolStripItem); } } }