winform tabcontrol控件的标签放到左边后,文字成是上下显示的

winform tabcontrol控件的标签放到左边后,文字成是上下显示的


using   System; 
using   System.Drawing; 
using   System.Collections; 
using   System.ComponentModel; 
using   System.Windows.Forms; 
using   System.Data; 

namespace WindowsApplication3
{
    ///   <summary> 
    ///   Form1   的摘要说明。 
    ///   </summary> 
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TabControl tabControl1; 
        private System.Windows.Forms.TabPage tabPage1; 
        private System.Windows.Forms.TabPage tabPage2; 
        ///   <summary> 
        ///   必需的设计器变量。 
        ///   </summary> 
        private System.ComponentModel.Container components = null; 

        public Form1()
        {
            // 
            //   Windows   窗体设计器支持所必需的 
            // 
            InitializeComponent();

            // 
            //   TODO:   在   InitializeComponent   调用后添加任何构造函数代码 
            // 
        }

        ///   <summary> 
        ///   清理所有正在使用的资源。 
        ///   </summary> 
        protected override void Dispose(bool disposing) 
        {
            if (disposing) 
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing); 
        }

        #region   Windows   窗体设计器生成的代码
        ///   <summary> 
        ///   设计器支持所需的方法   -   不要使用代码编辑器修改 
        ///   此方法的内容。 
        ///   </summary> 
        private void InitializeComponent()
        {
            this.tabControl1 = new System.Windows.Forms.TabControl();
            this.tabPage1 = new System.Windows.Forms.TabPage();
            this.tabPage2 = new System.Windows.Forms.TabPage();
            this.tabControl1.SuspendLayout();
            this.SuspendLayout();
            //   
            //   tabControl1 
            //   
            this.tabControl1.Alignment = System.Windows.Forms.TabAlignment.Left; 
            this.tabControl1.Controls.Add(this.tabPage1); 
            this.tabControl1.Controls.Add(this.tabPage2); 
            this.tabControl1.Location = new System.Drawing.Point(16, 16); 
            this.tabControl1.Multiline = true; 
            this.tabControl1.Name = "tabControl1 ";
            this.tabControl1.SelectedIndex = 0; 
            this.tabControl1.TabIndex = 1; 
            this.tabControl1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tabControl1_DrawItem); 
            //   
            //   tabPage1 
            //   
            this.tabPage1.BackColor = System.Drawing.SystemColors.ActiveCaptionText; 
            this.tabPage1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
            this.tabPage1.Location = new System.Drawing.Point(40, 4); 
            this.tabPage1.Name = "tabPage1 ";
            this.tabPage1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; 
            this.tabPage1.Size = new System.Drawing.Size(156, 92); 
            this.tabPage1.TabIndex = 0; 
            this.tabPage1.Text = "海宁1 ";
            //   
            //   tabPage2 
            //   
            this.tabPage2.Location = new System.Drawing.Point(40, 4); 
            this.tabPage2.Name = "tabPage2 ";
            this.tabPage2.Size = new System.Drawing.Size(156, 92); 
           this.tabPage2.TabIndex = 1; 
            this.tabPage2.Text = "海宁2 ";
            this.tabPage2.Visible = false; 
            //   
            //   Form1 
            //   
            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
           this.ClientSize = new System.Drawing.Size(292, 273); 
            this.Controls.Add(this.tabControl1); 
            this.Name = "Form1 ";
            this.Text = "Form1 ";
            this.Load += new System.EventHandler(this.Form1_Load); 
            this.tabControl1.ResumeLayout(false); 
            this.ResumeLayout(false); 

        }
        #endregion


        ///   <summary> 
        ///   应用程序的主入口点。 
        ///   </summary> 
        [STAThread] 
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void Form1_Load(object sender, System.EventArgs e) 
        {
            this.tabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed; 
            this.tabControl1.Alignment = System.Windows.Forms.TabAlignment.Left; 
        }

        private void tabControl1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e) 
        {
            StringFormat sf = new StringFormat();

            //   set   the   Alignment   to   center 
            sf.LineAlignment = StringAlignment.Center; 
            sf.Alignment = StringAlignment.Center; 
            //   Draw   the   text 
            e.Graphics.DrawString(((TabControl)sender).TabPages[e.Index].Text, 
            System.Windows.Forms.SystemInformation.MenuFont, 
            new SolidBrush(Color.Black), 
            e.Bounds, 
            sf); 
        }
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现WinformTabControl控件tabpage标签页边缘变成圆角、不显示边框颜色、标签文字侧着显示的效果,可以通过以下步骤: 1. 新建一个类,继承自TabControl,重写OnPaint方法,添加以下代码: ```csharp protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // 设置TabControl控件的Region属性 System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); Rectangle rect = this.ClientRectangle; rect.Inflate(-10, -10); path.AddRoundRectangle(rect, 20); this.Region = new Region(path); // 设置标签文字竖排侧着显示 foreach (TabPage tabpage in this.TabPages) { tabpage.Text = ""; tabpage.Paint += new PaintEventHandler(TabPage_Paint); } } private void TabPage_Paint(object sender, PaintEventArgs e) { TabPage tabpage = (TabPage)sender; Graphics g = e.Graphics; g.RotateTransform(-90); g.TranslateTransform(-tabpage.Height, 0); SizeF size = g.MeasureString(tabpage.Text, tabpage.Font); g.DrawString(tabpage.Text, tabpage.Font, Brushes.Black, (tabpage.Width - size.Width) / 2, (tabpage.Height - size.Height) / 2); } ``` 2. 添加一个自定义控件类,继承自TabPage,重写OnPaint方法,添加以下代码: ```csharp protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // 不显示边框颜色 ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.Transparent, ButtonBorderStyle.None); } ``` 3. 在窗体中使用自定义控件类,即可实现TabControl控件tabpage标签页边缘变成圆角、不显示边框颜色、标签文字侧着显示的效果。 需要注意的是,上述代码中使用了一个自定义的GraphicsPath类,在AddRoundRectangle方法中设置了圆角大小,可以根据需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值