当前位置:编程学习 > C#/ASP.NET >>

C# TabControl重绘标题(DrawItem)设置标题区域大小

参考如下代码完成了标题重绘,重绘后标题在左侧,但是格式有变化。新标题的长等于原标题的宽,新标题的宽等于原标题的长,如何保持标题的长和宽,只重复标题的位置。

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);  
        }  
}  
--------------------编程问答--------------------             sf.LineAlignment = StringAlignment.Center;
            sf.Alignment = StringAlignment.Center;
            sf.FormatFlags = StringFormatFlags.DirectionVertical; --------------------编程问答-------------------- 不对啊!哥们,还是和之前一样,长宽还是对调了!加了你这句,文字显示是沿着竖线吧 
引用 1 楼  的回复:
            sf.LineAlignment = StringAlignment.Center;
            sf.Alignment = StringAlignment.Center;
            sf.FormatFlags = StringFormatFlags.DirectionVertical;
--------------------编程问答-------------------- 长宽肯定是对调了,你标题长度不一样,tab绘制标题的长度肯定不会跟着你一样变长 --------------------编程问答-------------------- 长宽肯定是对调了,你标题长度不一样,tab绘制标题的长度肯定不会跟着你一样变长
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,