タブコントロールの特定のタブページがアクティブかどうかを確認するイベントを作成しています。
ポイントは、タブコントロール内のそのタブページが現在選択されているタブである場合、イベントをトリガーします。必要なものを提供するコードはありますか?
あなたがWinformで外を見ていると仮定すると、タブのSelectedIndexChanged
イベントがあります
ここで、特定のタブを確認し、ロジックを続行できます
private void tab1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tab1.SelectedTab == tab1.TabPages["tabname"])//your specific tabname
{
// your stuff
}
}
特定のタブページがタブコントロールの現在選択されているページであるかどうかを確認するのは簡単です。タブコントロールのSelectedTabプロパティを使用するだけです。
if (tabControl1.SelectedTab == someTabPage)
{
// Do stuff here...
}
これは、選択されているタブページ以外のイベントに基づいてコードが実行される場合に役立ちます(この場合、SelectedIndexChangedの方が適しています)。
たとえば、タイマーを使用してTCP/IP接続で定期的にポーリングするアプリケーションがありますが、不必要なTCP/IPトラフィックを避けるために、現在選択されているタブページのGUIコントロールを更新するものだけをポーリングします。
.Net 4で使用できる
if (tabControl1.Controls[5] == tabControl1.SelectedTab)
MessageBox.Show("Tab 5 Is Selected");
OR
if ( tabpage5 == tabControl1.SelectedTab)
MessageBox.Show("Tab 5 Is Selected");
イベントを使用してtabPage1.Enter
の方が便利です。
tabPage1.Enter += new System.EventHandler(tabPage1_Enter);
private void tabPage1_Enter(object sender, EventArgs e)
{
MessageBox.Show("you entered tabPage1");
}
これは、タブごとに異なるロジックがある場合、if-elseステートメントをネストするよりも優れています。また、将来新しいタブが追加される可能性がある場合により適しています。
フォームが読み込まれ、tabPage1
はデフォルトで開かれます。
なんらかの理由で、上記は私にはうまくいきません。これは何をしたかです:
if (tabControl.SelectedTab.Name == "tabName" )
{
.. do stuff
}
tabControl.SelectedTab.Nameは、tabcontrol自体のページに割り当てられた名前属性です。