public ResponsiveLinkLabel() : base()
        {
            this.LinkVisited  = false;
            this.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
            this.AutoSize     = true;

            this._properHand = LoadCursor(0, 32649);

            DataGridView d = new DataGridView();
            Font         f = d.DefaultCellStyle.Font;

            if (VisualStyleRenderer.IsSupported)
            {
                VisualStyles.ControlPanel.ControlPanelPart part = VisualStyles.ControlPanel.ControlPanelPart.TaskLink;
                VisualStyleRenderer renderer = VisualStyles.ControlPanel.GetRenderer(part, (int)VisualStyles.ControlPanel.TaskLinkState.Hot, true);

                using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) {
                    this.Font      = renderer.GetFont(g, FontProperty.GlyphFont);
                    this.LinkColor = this.VisitedLinkColor = NormalColor = renderer.GetColor(ColorProperty.TextColor);

                    renderer             = VisualStyles.ControlPanel.GetRenderer(part, (int)VisualStyles.ControlPanel.TaskLinkState.Pressed);
                    this.ActiveLinkColor = HoverColor = renderer.GetColor(ColorProperty.TextColor);

                    renderer = VisualStyles.ControlPanel.GetRenderer(part, (int)VisualStyles.ControlPanel.TaskLinkState.Disabled);
                    this.DisabledLinkColor = renderer.GetColor(ColorProperty.TextColor);
                }
            }
        }
        public void VisualStyleRenderer_GetFont_for_InvalidFontProperty(FontProperty value)
        {
            var renderer = new VisualStyleRenderer("TEXTSTYLE", 1, 0);

            using var image         = new Bitmap(10, 10);
            using Graphics graphics = Graphics.FromImage(image);

            Assert.Throws <InvalidEnumArgumentException>("prop", () => renderer.GetFont(graphics, value));
        }
        public void VisualStyleRenderer_GetFont_for_TextFont()
        {
            var renderer = new VisualStyleRenderer("TEXTSTYLE", 1, 0);

            using var image         = new Bitmap(10, 10);
            using Graphics graphics = Graphics.FromImage(image);
            using Font font         = renderer.GetFont(graphics, FontProperty.TextFont);

            Assert.NotNull(font);
        }
        public ControlPanelNavigation()
            : base()
        {
            SetStyle(ControlStyles.ContainerControl, false);
            SetStyle(ControlStyles.ResizeRedraw, true);
            UpdateStyles();

            this.SuspendLayout();

            Dock      = DockStyle.Left;
            BackColor = System.Drawing.Color.Transparent;
            Width     = 200;
            Padding   = new Padding(22, 10, 12, 15);
            Font      = SystemFonts.MessageBoxFont;

            _tasks = new ControlPanelTaskPanel()
            {
                Dock = DockStyle.Fill
            };

            _otherTasks = new ControlPanelTaskPanel()
            {
                AutoSize     = true,
                AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink,
                Dock         = DockStyle.Bottom
            };

            _otherLabel = new Label()
            {
                Text    = "Other Tasks",
                Visible = false,
                Padding = new Padding(0, 0, 0, 5)
            };

            if (VisualStyleRenderer.IsSupported)
            {
                VisualStyleRenderer renderer = VisualStyles.ControlPanel.GetRenderer(VisualStyles.ControlPanel.ControlPanelPart.TaskLink, (int)VisualStyles.ControlPanel.TaskLinkState.Disabled, true);

                using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) {
                    _otherTasks.Font      = renderer.GetFont(g, FontProperty.GlyphFont);
                    _otherTasks.ForeColor = renderer.GetColor(ColorProperty.TextColor);
                }
            }

            _otherTasks.SuspendLayout();
            _otherTasks.Controls.Add(_otherLabel);

            _otherTasks.ControlAdded += delegate(object Sender, ControlEventArgs e) {
                _otherLabel.Visible = true;
            };

            _otherTasks.ControlRemoved += delegate(object Sender, ControlEventArgs e) {
                if (_otherTasks.Controls.Count == 0)
                {
                    _otherLabel.Visible = false;
                }
            };

            this.Controls.Add(_otherTasks);
            this.Controls.Add(_tasks);

            this._otherTasks.ResumeLayout(true);
            this.ResumeLayout(true);
        }