2012-10-07 49 views
1

我想在Windows窗體應用程序中創建一個Web瀏覽器。我添加了關閉選項卡在contextmenu中的選項。我不希望在右鍵單擊時選擇該頁面,只需要出現上下文菜單。這工作正常。問題是當我點擊關閉選項卡時,前一個選項卡關閉,而不是當前選項卡,因爲前一個選項卡是選定的選項卡。我試圖通過獲取tabpage的矩形位置來解決這個問題,但是對於所有的選項卡來說,這看起來是相同的。請幫忙!檢測未選中,但點擊了C#的窗體頁面窗口窗體應用程序

//this is my event handler for closing the tab 
    private void closeToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.tabControlBrowser.TabPages.Remove(this.tabControlBrowser.SelectedTab); 
    } 

回答

2

Yest你是正確的,是因爲你使用

this.tabControlBrowser.TabPages.Remove(this.tabControlBrowser.SelectedTab); 

這將刪除當前選中的選項卡,但不是您點擊標籤頁。

請嘗試以下代碼,希望它會幫助你前進

TabPage _ClickedTab; 
    public Form1() 
    { 
     InitializeComponent(); 
     this.tabControl1.MouseClick += new MouseEventHandler(tabControl1_MouseClick); 

    } 

    void tabControl1_MouseClick(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 
      this.contextMenuStrip1.Show(this.tabControl1, e.Location); 


      Rectangle r2 = this.tabControl1.GetTabRect(0); 

      foreach (TabPage item in this.tabControl1.TabPages) 
      { 
       Rectangle r = this.tabControl1.GetTabRect(tabControl1.TabPages.IndexOf(item)); 
       if (r.X < e.Location.X && e.Location.X < r.X + r.Width && r.Y < e.Location.Y && e.Location.Y < r.Y + r.Height) 
       { 
        _ClickedTab = item; 
       } 

      } 


     } 
    } 


    private void toolStripMenuItem3_Click(object sender, EventArgs e) 
    { 
     this.tabControl1.TabPages.Remove(_ClickedTab); 
    } 
+0

返回的矩形鼠標的位置,但此事件處理程序沒有得到當出現上下文菜單時調用。當我用鼠標右鍵單擊選項卡時,選定的索引不會更改,直到我點擊它。我不希望右鍵點擊選項卡。 – DarknessBeginsHere

+0

謝謝..我工作 – DarknessBeginsHere

+0

救了我幾個小時的試驗和錯誤。愛StackOverflow。 – bkwdesign

0

您可以測試對抗的TabControl#GetTabRect

相關問題