Без извлечения класса приведем аккуратный фрагмент: http://www.dotnetthoughts.net/implementing-close-button-in-tab-pages/
Установите для свойства DrawMode элемента управления вкладкой значение OwnerDrawFixed.Это свойство определяет, может ли система или разработчик рисовать подписи.Добавьте код в событие DrawItem элемента управления Tab - это событие будет вызываться для рисования каждой вкладки.
//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();
Теперь для действия кнопки закрытия нам нужно добавить следующий код в событие MouseDown:Управление вкладками.
//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;
}
}
}