Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Close button in tabControl

is there anyone can tell me how to add close button in each tab in using tabControl in C#? i plan to use button pic for replacing [x] in my tab..

thank you

like image 983
user380899 Avatar asked Jul 06 '10 03:07

user380899


1 Answers

Without deriving a class, here is a neat snippet: http://www.dotnetthoughts.net/implementing-close-button-in-tab-pages/

Set the DrawMode property of the Tab Control to OwnerDrawFixed. This property decides whether system or developer can paint the captions. Add the code in the DrawItem event of the Tab Control – This event will be invoked for painting each Tab Page.

    //This code will render a "x" mark at the end of the Tab caption.  e.Graphics.DrawString("x", e.Font, Brushes.Black, e.Bounds.Right - 15, e.Bounds.Top + 4); e.Graphics.DrawString(this.tabControl1.TabPages[e.Index].Text, e.Font, Brushes.Black, e.Bounds.Left + 12, e.Bounds.Top + 4); e.DrawFocusRectangle(); 

Now for close button action, we need to add the following code to the MouseDown event of the Tab Control.

//Looping through the controls. for (int i = 0; i < this.tabControl1.TabPages.Count; i++) {     Rectangle r = tabControl1.GetTabRect(i);    //Getting the position of the "x" mark.     Rectangle closeButton = new Rectangle(r.Right - 15, r.Top + 4, 9, 7);     if (closeButton.Contains(e.Location))     {         if (MessageBox.Show("Would you like to Close this Tab?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)         {             this.tabControl1.TabPages.RemoveAt(i);             break;         }     } } 
like image 67
andycted Avatar answered Sep 24 '22 08:09

andycted