检查是否选择了特定标签页(活动)

时间:2011-12-28 07:21:10

标签: c# winforms tabcontrol tabpage

我正在制作一个事件来检查标签控件中的特定标签页是否处于活动状态。

关键是,如果选项卡控件中的选项卡页面是当前选定的选项卡,它将触发事件。任何会给我我需要的代码吗?

6 个答案:

答案 0 :(得分:83)

假设您正在使用Winform,那么标签

会有SelectedIndexChanged个事件

现在你可以检查你的特定标签并继续逻辑

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

答案 1 :(得分:22)

检查特定标签页是否是标签控件的当前选定页面很容易;只需使用选项卡控件的SelectedTab属性:

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

如果代码是根据选择的标签页以外的某些事件执行的话,这会更有用(在这种情况下,SelectedIndexChanged将是更好的选择)。

例如,我有一个应用程序使用计时器定期通过TCP / IP连接轮询东西,但是为了避免不必要的TCP / IP流量,我只轮询更新当前所选标签页中GUI控件的内容。

答案 2 :(得分:5)

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

答案 3 :(得分:1)

无论出于何种原因,上述内容对我都不起作用。这就是:

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

其中tabControl.SelectedTab.Name是tabcontrol本身分配给页面的name属性。

答案 4 :(得分:1)

我认为使用事件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,则会触发此事件。

答案 5 :(得分:1)

这也可以。

if (tabControl.SelectedTab.Text == "tabText" )
{
    .. do stuff
}