コード例 #1
0
ファイル: Theming.cs プロジェクト: gtrant/eraser
        /// <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);
                }
            }
        }
コード例 #2
0
ファイル: Theming.cs プロジェクト: gtrant/eraser
 /// <summary>
 /// Clean up the reference to the menu when the menu is disposed so we no
 /// longer track the menu for theme changes.
 /// </summary>
 private static void OnThemedMenuDisposed(object sender, EventArgs e)
 {
     ThemedMenus.Remove(sender as ToolStrip);
 }