天天看点

WinForm 选项卡在左边(虽然可以直接设置但是文字错误方向,也许是VS2010的BUG)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using DigitaMiniarea.Properties;
using System.Runtime.InteropServices;

namespace DigitaMiniarea
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
            this.SetStyle(ControlStyles.ResizeRedraw, true);
        }

      
        private void FrmMain_Load(object sender, EventArgs e)
        {

            this.tab_sell.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
            this.tab_function.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;


            //设置Alignment 为 Left/Right 可以再可视化编辑里设置
            this.tab_sell.Alignment = System.Windows.Forms.TabAlignment.Left;
            this.tab_function.Alignment = System.Windows.Forms.TabAlignment.Left;


            //将tabcontrol的drawitem 重写 交给自己写的DrawItem方法
            this.tab_sell.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tabControl1_DrawItem);
            this.tab_function.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tabControl1_DrawItem);

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

            // 设置文字是居中的
            sf.LineAlignment = StringAlignment.Center;
            sf.Alignment = StringAlignment.Center;
            //画出选项卡文字

            e.Graphics.DrawString(((TabControl)sender).TabPages[e.Index].Text,
            System.Windows.Forms.SystemInformation.MenuFont,
            new SolidBrush(Color.Black),
            e.Bounds, sf);
        }
    }
}
           

继续阅读