66

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

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

4

6 に答える 6

98

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

これで、特定のタブを確認してロジックを進めることができます

private void tab1_SelectedIndexChanged(object sender, EventArgs e)
{
     if (tab1.SelectedTab == tab1.TabPages["tabname"])//your specific tabname
     {
         // your stuff
     }
}
于 2011-12-28T07:28:35.843 に答える
29

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

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

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

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

于 2012-04-02T09:13:26.920 に答える
7

.Net4では使用できます

if (tabControl1.Controls[5] == tabControl1.SelectedTab)
                MessageBox.Show("Tab 5 Is Selected");

また

if ( tabpage5 == tabControl1.SelectedTab)
         MessageBox.Show("Tab 5 Is Selected");
于 2014-12-10T19:42:40.813 に答える
4

どういうわけか、上記は私にはうまくいきません。これは何をしたかです:

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

ここで、tabControl.SelectedTab.Nameは、タブコントロール自体のページに割り当てられた名前属性です。

于 2016-08-27T20:49:47.530 に答える
3

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れ、デフォルトで開かれた場合に発生することに注意してください。

于 2018-06-21T14:03:47.803 に答える
1

これも機能します。

if (tabControl.SelectedTab.Text == "tabText" )
{
    .. do stuff
}
于 2019-11-18T19:13:42.017 に答える