2012-03-13 47 views
9

我試圖根據在選項卡控件上單擊的選項卡頁自動觸發事件。TabPage單擊活動

在我的表單的設計模式中,當我點擊選項卡時,屬性框會顯示選項卡System.Windows.Forms.TabControl,無論哪個選項卡被選中。但是,我必須點擊實際頁面,而不是要將屬性的標籤更改爲頁面的名稱,例如TaskListPage System.Windows.Forms.TabPage。

我的tabcontrol被稱爲標籤,我試圖用下面的代碼來測試它,它應該顯示一個基於標籤選項的消息。

private void Tabs_SelectedIndexChanged(object sender, EventArgs e) 

     { 
      if (Tabs.SelectedTab == TaskListPage) 
      { 
       MessageBox.Show("TASK LIST PAGE"); 
      } 
      else if (Tabs.SelectedTab == SchedulePage) 
      { 
       MessageBox.Show("SCHEDULE PAGE"); 
      } 
     } 

當我測試上面的代碼時,什麼都沒有發生。

當點擊特定選項卡時,獲取事件的任何幫助將不勝感激!

三江源

回答

13

這聽起來像你沒有它連接好:

public Form1() { 
    InitializeComponent();  
    Tabs.SelectedIndexChanged += new EventHandler(Tabs_SelectedIndexChanged); 
} 

還有其他的活動,可以給你這些信息,以及:SelectedSelecting

void Tabs_Selected(object sender, TabControlEventArgs e) { 
    if (e.TabPage == TaskListPage) { 
    // etc 
    } 
} 
+0

感謝它現在正在工作! :) – Rob 2012-03-13 12:58:35

+0

我會在這裏添加這個尋找解決我遇到的同樣問題的解決方案。事件不會在構造函數運行之後觸發。即使按照Lars的建議手動添加處理程序也不起作用。 在窗體的Load事件處理程序中添加觸發事件的代碼。 – ensignr 2015-11-30 05:27:15

0

這第一部分雲在

public Form1() 
    { 
// This is near the top of the form 1 code in form1.cs 

     InitializeComponent(); 
     tabControl1.SelectedIndexChanged += new EventHandler(TabControl1_SelectedIndexChanged); 
    } 

下面然後倒在你的常規代碼你只要告訴它的控制應具有焦點被點擊標籤頁之後。在我的文字處理器中,我使用了一個富文本框和選項卡控件來模擬msword功能區。在我的情況下,富文本控件不是一個標籤頁上爲我的標籤頁上覆蓋的形式

private void TabControl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     richTextBox1.Focus(); 
    } 

的頂部,也許1或2英寸這是我叫我的字處理器。任何人都想使用它。 Larry's Journal