[VB.NET,C#.NET] - TabControl的Alignment为Left或Right显示TabPage.Text问题
来源:http://topic.csdn.net/t/20050526/17/4038042.html
VB.NET
PrivateSub TabControl1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
'Me.TabControl1.DrawMode = TabDrawMode.OwnerDrawFixed ' 必须先改变模式(可将此句放在Load事件上)
Dim tabArea As Rectangle
Dim tabTextArea As RectangleF
tabArea = TabControl1.GetTabRect(e.Index)
tabTextArea = CType(TabControl1.GetTabRect(e.Index), RectangleF)
'Me.TabControl1.DrawMode = TabDrawMode.OwnerDrawFixed ' 必须先改变模式(可将此句放在Load事件上)
Dim tabArea As Rectangle
Dim tabTextArea As RectangleF
tabArea = TabControl1.GetTabRect(e.Index)
tabTextArea = CType(TabControl1.GetTabRect(e.Index), RectangleF)
Dim g As Graphics = e.Graphics
Dim sf As StringFormat = New StringFormat()
sf.LineAlignment = StringAlignment.Center
sf.Alignment = StringAlignment.Center
Dim font As Font = Me.TabControl1.Font
Dim brush As SolidBrush = New SolidBrush(Color.Black)
g.DrawString((CType(sender, TabControl)).TabPages(e.Index).Text, font, brush, tabTextArea, sf)
End Sub
C#.NET
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e) { //this.tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed; // 必须先改变模式(可将此句放在Load事件上) Rectangle tabArea; RectangleF tabTextArea; tabArea = tabControl1.GetTabRect(e.Index); tabTextArea = (RectangleF)tabControl1.GetTabRect(e.Index); 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); }
个性签名:做要做好,做到不三不四不如不做。