2012-03-13 9 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

ですね:SelectedSelecting

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

だけでなく、あなたにこの情報を与えることができ、他のイベントがあります。

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

ありがとうございます! :) – Rob

+0

コンストラクターが実行されるまで、イベントが発生しないように、同じ問題に対する解決策を探している人に、ここでこれを追加します。 Larsが示唆するように手動でハンドラを追加することもできません。 フォームのLoadイベントハンドラでイベントをトリガするコードを追加します。 – ensignr

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

関連する問題