【转】c# TabControl 中TabPages放左边显示文字

转自:http://blog.sina.com.cn/s/blog_8d9200eb01011k1b.html

TabControl 控件默认的是将TabPages放在上面,当你改变它的Alignment属性的时候你可能会发现一个奇怪的现象:当Alignment设置为top,Bottom时,是没有问题的,而当你设置为Left和Right时,你会发现标题不显示文字。

     然后上网查找了一些资料,提示说此时文字要重新绘制,毕竟重新绘制的文字跟原来的还是有差别的,不管怎么样,文字是显示出来了。现在我将整理的代码贴出来,希望对你有所帮助。

 代码1

 

 

[c-sharp]  view plain copy
  1.          
  2.         private Rectangle tabArea;  
  3.         private RectangleF tabTextArea;  
  4.   
  5.         private void Form1_Load(object sender, EventArgs e)  
  6.          
  7.             TabSetMode();  
  8.              
  9.          
  10.   
  11.         /// <summary>  
  12.         /// 设定控件绘制模式  
  13.         /// </summary>  
  14.         private void TabSetMode()  
  15.          
  16.         tabControl1.DrawMode TabDrawMode.OwnerDrawFixed;  
  17.         tabControl1.Alignment TabAlignment.Left   
  18.          
  19.   
  20.         private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)  
  21.          
  22.             tabArea tabControl1.GetTabRect(e.Index);  
  23.             tabTextArea tabArea;  
  24.             Graphics e.Graphics;  
  25.             StringFormat sf new StringFormat();  
  26.             sf.LineAlignment StringAlignment.Center;  
  27.             sf.Alignment StringAlignment.Center;  
  28.             Font font this.tabControl1.Font;  
  29.             SolidBrush brush new SolidBrush(Color.Black);  
  30.             g.DrawString(((TabControl)(sender)).TabPages[e.Index].Text, font, brush, tabTextArea, sf);  
  31.          
  32.  

 

说明:此段代码,可以使得 TabPages的Text都能显示完整。

        tabControl1.GetTabRect(e.Index) -- 返回该选项卡控件中的指定选项卡的边框。

代码2

 

 

[c-sharp]  view plain copy
  1. private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)  
  2.         
  3. StringFormat sfForamt new StringFormat();  
  4.            sfForamt.LineAlignment StringAlignment.Center;  
  5.            sfForamt.Alignment StringAlignment.Center;  
  6.            TabControl tcTab (TabControl)sender;  
  7.            e.Graphics.DrawString(tcTab.TabPages[e.Index].Text, SystemInformation.MenuFont, new SolidBrush(Color.Black), e.Bounds, sfForamt);  
  8.            

 说明:此段代码,虽然也实现了,但是Text 没有显示完整,只有你选定一个活动TabPages的时候才会显示完整的Text

这是我从网上找到的两个代码,其实实现方式都一样,都是重新再绘制TabPages的样式。可能还有其他的更好的方式,希望有高手补充


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值