【转】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的样式。可能还有其他的更好的方式,希望有高手补充


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#TabControl是一个Windows窗体控件,它提供了选项卡的布局,允许用户在不同的选项卡间切换内容。你可以使用TabControl来创建具有多个选项卡的用户界面,每个选项卡可以包含不同的内容。 要使用TabControl,你需要在窗体上添加一个TabControl控件,并在该控件内部添加选项卡页(TabPage)。每个选项卡页可以包含其他控件,用于显示特定的内容。 下面是一个简单的示例,演示如何在C#使用TabControl控件: ```csharp using System.Windows.Forms; public class MainForm : Form { public MainForm() { // 创建一个TabControl控件 TabControl tabControl = new TabControl(); tabControl.Dock = DockStyle.Fill; // 创建两个选项卡页 TabPage tabPage1 = new TabPage("选项卡1"); TabPage tabPage2 = new TabPage("选项卡2"); // 在选项卡页添加其他控件 tabPage1.Controls.Add(new Label() { Text = "这是选项卡1的内容" }); tabPage2.Controls.Add(new Label() { Text = "这是选项卡2的内容" }); // 将选项卡页添加到TabControl控件 tabControl.TabPages.Add(tabPage1); tabControl.TabPages.Add(tabPage2); // 将TabControl控件添加到窗体 this.Controls.Add(tabControl); } static void Main() { Application.Run(new MainForm()); } } ``` 以上示例创建了一个窗体,其包含一个TabControl控件和两个选项卡页。每个选项卡页内部包含一个Label控件,用于显示不同的内容。你可以根据自己的需求在选项卡页添加其他控件或自定义内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值