using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Word
{
public partial class CustomTabControl : TabControl
{
public CustomTabControl()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
/// <summary>
/// 错误状态颜色
/// </summary>
private SolidBrush errorStatusColor;
[Description("获取或设置错误状态颜色")]
public SolidBrush ErrorStatusColor
{
get
{
if(errorStatusColor == null)
{
errorStatusColor = new SolidBrush(Color.Red);
}
return errorStatusColor;
}
set { errorStatusColor = value; }
}
/// <summary>
/// 选中状态颜色
/// </summary>
private SolidBrush selectStatusColor;
[Description("获取或设置选中状态颜色")]
public SolidBrush SelectStatucColor
{
get
{
if(selectStatusColor == null)
{
selectStatusColor = new SolidBrush(Color.Gray);
}
return selectStatusColor;
}
set { selectStatusColor = value; }
}
/// <summary>
/// 选中字体颜色
/// </summary>
private SolidBrush tabPageFontColor;
[Description("获取或设置选中字体颜色")]
public SolidBrush TabPageFontColor
{
get
{
if(tabPageFontColor == null)
{
tabPageFontColor = new SolidBrush(Color.Black);
}
return tabPageFontColor;
}
set { tabPageFontColor = value; }
}
/// <summary>
/// tab页字体
/// </summary>
private Font tabPageFont;
[Description("获取或设置tab页字体")]
public Font TabPageFont
{
get
{
if(tabPageFont == null)
{
tabPageFont = new Font("微软雅黑", 10.5F);
}
return tabPageFont;
}
set { tabPageFont = value; }
}
private void CustomTabControl_DrawItem(object sender, DrawItemEventArgs e)
{
//设置文字对齐方式
StringFormat StringF = new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
e.Graphics.FillRectangle(SelectStatucColor, this.GetTabRect(this.SelectedIndex));
for (int i = 0; i < this.TabPages.Count; i++)
{
if (TabPages[i].Tag != null)
{
if ((TabPageStatus)TabPages[i].Tag == TabPageStatus.ErrorStatus)
{
e.Graphics.FillRectangle(ErrorStatusColor, this.GetTabRect(i));
}
}
e.Graphics.DrawString(this.TabPages[i].Text, TabPageFont, TabPageFontColor, this.GetTabRect(i), StringF);
}
}
/// <summary>
/// 设置TabPage标签页状态
/// </summary>
/// <param name="tabPageIndex"></param>
public void SetTabPageErrorStatusColor(int tabPageIndex)
{
this.TabPages[tabPageIndex].Tag = TabPageStatus.ErrorStatus;
}
}
/// <summary>
/// 枚举
/// </summary>
public enum TabPageStatus : int
{
/// <summary>
/// 错误状态
/// </summary>
ErrorStatus = 1,
}
}