[C#] [TabControl] 使用滑鼠中鍵關閉其他的分頁

  • 237
  • 0

現今的大多數編輯軟體,幾乎都有分頁的功能,本文介紹如何使用滑鼠中鍵關閉其他的分頁。

假設目前有兩個分頁,當我目前在第二個分頁時,

我希望當我要關閉第一個分頁時,只需要使用滑鼠中鍵點擊第一個分頁,而不是先選取第一個分頁再用滑鼠中鍵關閉它。

private void Form1_Load(object sender, EventArgs e)
{  
    this.tabControl1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tabControl1_MouseWheelDown);
}

private void tabControl1_MouseWheelDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Middle) // 若按下滑鼠中鍵
    {
        Point p = this.tabControl1.PointToClient(Cursor.Position); // 取得游標所在位置的座標
        for (int i = 0; i < this.tabControl1.TabCount; i++)
        {
            Rectangle r = this.tabControl1.GetTabRect(i); // 取得 TabPage 的邊框

            // 如果游標落在邊框內
            if (r.Contains(p))
            {
                if (this.tabControl1.TabCount > 1) // 如果分頁有一個以上再關閉
                {
                    this.tabControl1.TabPages.RemoveAt(i); // 移除所在邊框的分頁
                    this.tabControl1.SelectedIndex = this.tabControl1.TabCount - 1; // 將所在邊框指定為最後一個
                    return;
                }
            }
        }
    }
}