web-dev-qa-db-ja.com

特定のタブページが選択されているかどうかを確認します(アクティブ)

タブコントロールの特定のタブページがアクティブかどうかを確認するイベントを作成しています。

ポイントは、タブコントロール内のそのタブページが現在選択されているタブである場合、イベントをトリガーします。必要なものを提供するコードはありますか?

52
Naufal Fikri

あなたがWinformで外を見ていると仮定すると、タブのSelectedIndexChangedイベントがあります

ここで、特定のタブを確認し、ロジックを続行できます

private void tab1_SelectedIndexChanged(object sender, EventArgs e)
{
     if (tab1.SelectedTab == tab1.TabPages["tabname"])//your specific tabname
     {
         // your stuff
     }
}
83
V4Vendetta

特定のタブページがタブコントロールの現在選択されているページであるかどうかを確認するのは簡単です。タブコントロールのSelectedTabプロパティを使用するだけです。

if (tabControl1.SelectedTab == someTabPage)
{
// Do stuff here...
}

これは、選択されているタブページ以外のイベントに基づいてコードが実行される場合に役立ちます(この場合、SelectedIndexChangedの方が適しています)。

たとえば、タイマーを使用してTCP/IP接続で定期的にポーリングするアプリケーションがありますが、不必要なTCP/IPトラフィックを避けるために、現在選択されているタブページのGUIコントロールを更新するものだけをポーリングします。

22
Jakob

.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");
5
ali

イベントを使用して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はデフォルトで開かれます。

1
fresher96

なんらかの理由で、上記は私にはうまくいきません。これは何をしたかです:

if (tabControl.SelectedTab.Name == "tabName" )
{
     .. do stuff
}

tabControl.SelectedTab.Nameは、tabcontrol自体のページに割り当てられた名前属性です。

1
DaBlue