TabContro最右边能添加一个关闭按钮么?
(不是选项卡的关闭按钮,而是整个TabControl的关闭按钮)
类似如下图:WInform里面的TabControl里能实现这个按钮么? 

解决方案 »

  1.   

    放pannel中,放个button,可以不
      

  2.   

    概念类似。但加上panel,和button一直布局很乱 。但是,现在我做的软件需要是一体的。即必须在Tabcontrol上。
      

  3.   

    WEB,WPF,WINFORM?
    有的有控件的,
    不过原理基本相同,移除搜有标签即可
      

  4.   

    http://www.cnblogs.com/sheme/archive/2010/10/27/1862555.html//C#重绘TabControl的Tabpage标签,添加图片及关闭按钮 
    using System;   
    using System.Collections.Generic;   
    using System.ComponentModel;   
    using System.Data;   
    using System.Drawing;   
    using System.Linq;   
    using System.Text;   
    using System.Windows.Forms;   
      
    namespace TabControlTest   
    {   
        public partial class Form1 : Form   
        {   
            public Form1()   
            {   
                InitializeComponent();   
            }   
      
            const int CLOSE_SIZE = 15;   
            Bitmap image = new Bitmap("ONE.ico");   
      
      
            private void MainTabControl_DrawItem(object sender, DrawItemEventArgs e)   
            {   
                try  
                {   
                    Rectangle myTabRect = this.MainTabControl.GetTabRect(e.Index);   
      
                    //先添加TabPage属性      
                    e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text   
                    , this.Font, SystemBrushes.ControlText, myTabRect.X + 2, myTabRect.Y + 2);   
      
                    //再画一个矩形框   
                    using (Pen p = new Pen(Color.White))   
                    {   
                        myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2);   
                        myTabRect.Width = CLOSE_SIZE;   
                        myTabRect.Height = CLOSE_SIZE;   
                        e.Graphics.DrawRectangle(p, myTabRect);   
      
                    }   
      
                    //填充矩形框   
                    Color recColor = e.State == DrawItemState.Selected ? Color.White : Color.White;   
                    using (Brush b = new SolidBrush(recColor))   
                    {   
                        e.Graphics.FillRectangle(b, myTabRect);   
                    }   
      
                    //画关闭符号   
                    using (Pen objpen = new Pen(Color.Black))   
                    {   
                        //"\"线   
                        Point p1 = new Point(myTabRect.X + 3, myTabRect.Y + 3);   
                        Point p2 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + myTabRect.Height - 3);   
                        e.Graphics.DrawLine(objpen, p1, p2);   
      
                        //"/"线   
                        Point p3 = new Point(myTabRect.X + 3, myTabRect.Y + myTabRect.Height - 3);   
                        Point p4 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + 3);   
                        e.Graphics.DrawLine(objpen, p3, p4);   
                        ////=============================================   
                        Bitmap bt = new Bitmap(image);   
                        Point p5 = new Point(myTabRect.X - 50, 4);   
                        e.Graphics.DrawImage(bt, p5);   
                        //e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, objpen.Brush, p5);   
                    }   
      
      
                    //绘制小图标                 
                    //==============================================================================   
                    //Bitmap bt = new Bitmap("E:\\1\\2.jpg");   
                    //Point p5 = new Point(4, 4);   
                    ////e.Graphics.DrawImage(bt, e.Bounds);   
                    //e.Graphics.DrawImage(bt, p5);   
                    //Pen pt = new Pen(Color.Red);   
                    ////e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, pt.Brush, e.Bounds);   
                    //e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, pt.Brush, p5);   
      
                    e.Graphics.Dispose();   
                }   
                catch  
                {   
        
                }   
        
            }   
      
            private void MainTabControl_MouseDown(object sender, MouseEventArgs e)   
            {   
                 if (e.Button == MouseButtons.Left)   
                 {   
                      int x = e.X, y = e.Y;   
      
                    //计算关闭区域      
                     Rectangle myTabRect = this.MainTabControl.GetTabRect(this.MainTabControl.SelectedIndex);   
        
                     myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2);   
                     myTabRect.Width = CLOSE_SIZE;   
                     myTabRect.Height = CLOSE_SIZE;   
        
                     //如果鼠标在区域内就关闭选项卡      
                     bool isClose = x > myTabRect.X && x < myTabRect.Right   
                      && y > myTabRect.Y && y < myTabRect.Bottom;   
        
                     if (isClose == true)   
                     {   
                         this.MainTabControl.TabPages.Remove(this.MainTabControl.SelectedTab);   
                     }   
                 }   
        
      
            }   
      
             //初始化页面   
             private void Form1_Load(object sender, EventArgs e)   
             {   
                 //清空控件   
                 //this.MainTabControl.TabPages.Clear();   
                 //绘制的方式OwnerDrawFixed表示由窗体绘制大小也一样   
                 this.MainTabControl.DrawMode = TabDrawMode.OwnerDrawFixed;   
                 this.MainTabControl.Padding = new System.Drawing.Point(CLOSE_SIZE, CLOSE_SIZE);   
                 this.MainTabControl.DrawItem += new DrawItemEventHandler(this.MainTabControl_DrawItem);   
                 this.MainTabControl.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainTabControl_MouseDown);   
             }   
      
             //添加新的tabPage并修改所有tabPage标签上面的图片   
             private void button1_Click(object sender, EventArgs e)   
             {   
                 TabPage tabtage = new TabPage();   
                 MainTabControl.TabPages.Add(tabtage);   
                 MainTabControl.SelectedTab = tabtage;   
                 image = new Bitmap("ONE.ico");   
      
      
             }   
             //关闭选中的tabPage   
             private void button2_Click(object sender, EventArgs e)   
             {   
                 MainTabControl.TabPages.Remove(MainTabControl.SelectedTab);   
             }   
        }   
    }
      

  5.   

     我最后搞了一个背景图片,最右边是一个按钮图标。然后,在整个tabcontrol下的mousedown事件下,在这个按钮的区域rectangle area里添加事件,完成想要处理的逻辑。