1. 程式人生 > >c#中給tabpage增加關閉按鈕

c#中給tabpage增加關閉按鈕

先來看下效果


要實現這個功能,我們分兩步來走,首先是需要繪製這個按鈕,然後再對這個按鈕的事件作出響應

1、將tabcontrol的繪製模式屬性修改為OwnerDrawFixed,這樣我們才能對DrawItem事件進行重寫

DrawItem繪製標題前將我們需要的按鈕繪製上去,程式碼如下

            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();


2、註冊一個tabcontrol滑鼠的mousedown事件,然後在事件裡面確定按鈕座標後作出響應,程式碼如下

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;
                    }
                }
            }

來自一個整天想著回家賣牛肉的小碼農