转自:http://blog.sina.com.cn/s/blog_8d9200eb01011k1b.html
TabControl 控件默认的是将TabPages放在上面,当你改变它的Alignment属性的时候你可能会发现一个奇怪的现象:当Alignment设置为top,Bottom时,是没有问题的,而当你设置为Left和Right时,你会发现标题不显示文字。
-
-
private Rectangle tabArea; -
private RectangleF tabTextArea; -
-
private void Form1_Load(object sender, EventArgs e) -
{ -
TabSetMode(); -
-
} -
-
/// <summary> -
/// 设定控件绘制模式 -
/// </summary> -
private void TabSetMode() -
{ -
tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed; -
tabControl1.Alignment = TabAlignment.Left ; -
} -
-
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e) -
{ -
tabArea = tabControl1.GetTabRect(e.Index); -
tabTextArea = tabArea; -
Graphics g = e.Graphics; -
StringFormat sf = new StringFormat(); -
sf.LineAlignment = StringAlignment.Center; -
sf.Alignment = StringAlignment.Center; -
Font font = this.tabControl1.Font; -
SolidBrush brush = new SolidBrush(Color.Black); -
g.DrawString(((TabControl)(sender)).TabPages[e.Index].Text, font, brush, tabTextArea, sf); -
} - }
说明:此段代码,可以使得
代码2
- private
void tabControl1_DrawItem(object sender, DrawItemEventArgs e) -
{ - StringFormat
sfForamt = new StringFormat(); -
sfForamt.LineAlignment = StringAlignment.Center; -
sfForamt.Alignment = StringAlignment.Center; -
TabControl tcTab = (TabControl)sender; -
e.Graphics.DrawString(tcTab.TabPages[e.Index].Text, SystemInformation.MenuFont, new SolidBrush(Color.Black), e.Bounds, sfForamt); -
}
这是我从网上找到的两个代码,其实实现方式都一样,都是重新再绘制TabPages的样式。可能还有其他的更好的方式,希望有高手补充