Проверьте, выбрана ли конкретная вкладка (активна) - PullRequest
52 голосов
/ 28 декабря 2011

Я создаю событие, чтобы проверить, активна ли конкретная вкладка в элементе управления вкладками.

Дело в том, что оно вызовет событие, если эта вкладка в элементе управления вкладками является выбранной в данный момент вкладкой.Любой код, который даст мне то, что мне нужно?

Ответы [ 5 ]

83 голосов
/ 28 декабря 2011

Предполагая, что вы смотрите в Winform, для вкладки

существует событие SelectedIndexChanged. Теперь в нем вы можете проверить свою вкладку и перейти к логике

private void tab1_SelectedIndexChanged(object sender, EventArgs e)
{
     if (tab1.SelectedTab == tab1.TabPages["tabname"])//your specific tabname
     {
         // your stuff
     }
}
22 голосов
/ 02 апреля 2012

Проверить, является ли конкретная страница вкладки текущей выбранной страницей элемента управления вкладкой, легко;просто используйте свойство SelectedTab элемента управления вкладками:

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

Это более полезно, если код выполняется на основе какого-либо события, кроме выбранной вкладки (в этом случае SelectedIndexChanged будет лучшим выбором),

Например, у меня есть приложение, которое использует таймер для регулярного опроса содержимого через TCP / IP-соединение, но во избежание ненужного трафика TCP / IP я опрашиваю только то, что обновляет элементы управления GUI на текущей выбранной вкладке.1006 *

5 голосов
/ 10 декабря 2014

в .Net 4 можно использовать

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

ИЛИ

if ( tabpage5 == tabControl1.SelectedTab)
         MessageBox.Show("Tab 5 Is Selected");
1 голос
/ 21 июня 2018

Я думаю, что использовать событие 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 голос
/ 27 августа 2016

По какой-то причине вышесказанное не будет работать для меня. Вот что сделал:

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

где tabControl.SelectedTab.Name - это атрибут имени, назначенный странице в самом tabcontrol.

...