Click here to Skip to main content
15,891,567 members
Articles / Programming Languages / C#

NeoTabControl Library

Rate me:
Please Sign up or sign in to vote.
4.96/5 (110 votes)
28 Sep 2012CPOL16 min read 198.3K   21.3K   163  
A custom .NET tab control for WinForms applications with add-in renderer support.
using System;
using System.Drawing;

namespace NeoTabControlLibrary.Renderer.VS2012
{
    public class Settings : ICloneable
    {
        #region Enum

        public enum PreLoadedStyles
        {
            Red,
            Blue,
            Green,
            OliveGreen
        };

        #endregion

        private PreLoadedStyles loadedStyles = PreLoadedStyles.Red;

        #region Properties

        public Font NeoTabPageItemsFont { get; set; }
        public Color BackColor { get; set; }
        public Color TabPageItemForeColor { get; set; }
        public Color SelectedTabPageItemForeColor { get; set; }
        public Color DisabledTabPageItemForeColor { get; set; }
        public Color MouseOverTabPageItemForeColor { get; set; }
        public Color TabItemFirstColor { get; set; }
        public Color TabItemSecondColor { get; set; }
        public Color TabItemHoverFirstColor { get; set; }
        public Color TabItemHoverSecondColor { get; set; }
        public int ItemObjectsDrawingMargin { get; set; }
        public int TabPageItemsBetweenSpacing { get; set; }
        public PreLoadedStyles LoadedStyles
        {
            get { return loadedStyles; }
            set
            {
                if (!value.Equals(loadedStyles))
                {
                    loadedStyles = value;
                    switch (loadedStyles)
                    {
                        default:
                            this.BackColor = Color.FromArgb(85, 41, 41);
                            this.TabItemFirstColor = Color.FromArgb(130, 77, 77);
                            this.TabItemSecondColor = Color.FromArgb(120, 63, 63);
                            this.TabItemHoverFirstColor = Color.FromArgb(140, 85, 85);
                            this.TabItemHoverSecondColor = Color.FromArgb(130, 75, 75);
                            break;
                        case PreLoadedStyles.Blue:
                            this.BackColor = Color.FromArgb(41, 57, 85);
                            this.TabItemFirstColor = Color.FromArgb(77, 96, 130);
                            this.TabItemSecondColor = Color.FromArgb(61, 82, 119);
                            this.TabItemHoverFirstColor = Color.FromArgb(87, 105, 138);
                            this.TabItemHoverSecondColor = Color.FromArgb(71, 95, 128);
                            break;
                        case PreLoadedStyles.Green:
                            this.BackColor = Color.FromArgb(49, 77, 52);
                            this.TabItemFirstColor = Color.FromArgb(87, 120, 90);
                            this.TabItemSecondColor = Color.FromArgb(72, 108, 76);
                            this.TabItemHoverFirstColor = Color.FromArgb(97, 128, 98);
                            this.TabItemHoverSecondColor = Color.FromArgb(82, 118, 86);
                            break;
                        case PreLoadedStyles.OliveGreen:
                            this.BackColor = Color.FromArgb(85, 74, 41);
                            this.TabItemFirstColor = Color.FromArgb(130, 116, 77);
                            this.TabItemSecondColor = Color.FromArgb(119, 104, 61);
                            this.TabItemHoverFirstColor = Color.FromArgb(140, 124, 87);
                            this.TabItemHoverSecondColor = Color.FromArgb(130, 114, 71);
                            break;
                    }
                    this.TabPageItemForeColor = Color.White;
                    this.SelectedTabPageItemForeColor = Color.White;
                    this.DisabledTabPageItemForeColor = SystemColors.GrayText;
                    this.MouseOverTabPageItemForeColor = Color.White;
                }
            }
        }

        #endregion

        #region ICloneable Members

        public object Clone()
        {
            Settings toBeCloned = new Settings();
            toBeCloned.NeoTabPageItemsFont = this.NeoTabPageItemsFont;
            toBeCloned.BackColor = this.BackColor;
            toBeCloned.TabPageItemForeColor = this.TabPageItemForeColor;
            toBeCloned.SelectedTabPageItemForeColor = this.SelectedTabPageItemForeColor;
            toBeCloned.DisabledTabPageItemForeColor = this.DisabledTabPageItemForeColor;
            toBeCloned.MouseOverTabPageItemForeColor = this.MouseOverTabPageItemForeColor;
            toBeCloned.TabItemFirstColor = this.TabItemFirstColor;
            toBeCloned.TabItemSecondColor = this.TabItemSecondColor;
            toBeCloned.TabItemHoverFirstColor = this.TabItemHoverFirstColor;
            toBeCloned.TabItemHoverSecondColor = this.TabItemHoverSecondColor;
            toBeCloned.ItemObjectsDrawingMargin = this.ItemObjectsDrawingMargin;
            toBeCloned.TabPageItemsBetweenSpacing = this.TabPageItemsBetweenSpacing;
            return toBeCloned;
        }

        #endregion
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) ARELTEK
Turkey Turkey
Since 1998...

MCPD - Enterprise Application Developer

“Hesaplı hareket ettiğini zanneden ve onunla iftihar eyliyen dar kafalar; kurtulmağa, yükselmeğe elverişli hiç bir eser vücüda getirmezler. Kurtuluş ve yükselişi, ancak varlığına dayanan ve mülkü milletin gizli kapalı hazinelerini verimli hale getirmesini bilen, şahsi menfaatini millet menfaati uğruna feda eden, ruhu idealist, dimağı realist şahsiyetlerde aramalıdır.”

Nuri Demirağ, 1947

Comments and Discussions