переключаться между вкладками с помощью кнопок внутри них

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

tabControl1.SelectedTab = tabPage2;

из-за этого нельзя было использовать. Как я могу этого добиться?


person Lizzy    schedule 30.08.2011    source источник
comment
Проверьте обновление, которое я предоставил ниже в своем ответе.   -  person reggie    schedule 01.09.2011


Ответы (2)


tabControl1.SelectedIndex = index; 
//where index is the index (integer value) of the tabpage you want to select

ОБНОВЛЕНИЕ

Проверьте: как получить доступ к свойствам пользовательского элемента управления в C#

Предоставьте свойства как свойства вашего пользовательского элемента управления следующим образом:

public int TabControlIndex
{
get { return tabControl1.index; }
set { tabControl1.index = value; }
 }

вы можете вызвать то же самое на своем form load event следующим образом:

Usercontrol1.TabControlIndex = index;
//where index is the index (integer value) of the tabpage you want to select
person reggie    schedule 30.08.2011
comment
Я не могу получить доступ к tabControl из пользовательского элемента управления, так как он находится в форме, а не в пользовательском элементе управления. Пользовательские элементы управления загружаются на страницы вкладок, а кнопки также находятся на этих пользовательских элементах управления. - person Lizzy; 30.08.2011
comment
Пожалуйста, проверьте обновление. Я предоставил ссылку в своем ответе выше. Также добавил фрагмент кода на основе решения, упомянутого в ссылке. Дайте мне знать, если это поможет. - person reggie; 30.08.2011

Вы можете передать экземпляр TabControl (вместе с его pageIndex) в свой UserControl в качестве параметра либо через конструктор, либо через какой-либо метод инициализации:

MyUserControl userControl = new MyUserControl(tabControl1, pageIndex1);

or

MyUserControl userControl2 = new MyUserControl();
userControl2.BindToTabControl(tabControl1, pageIndex2);

В этом случае ваш UserControl сможет обрабатывать клики пользователей и переключать вкладки.

Или вы можете создавать события в своем UserControl, которые будут срабатывать, когда пользователь нажимает кнопку UserControl. Ваша основная форма должна подписываться на эти события и обрабатывать их. В этом случае за переключение вкладок будет отвечать код вашей основной формы. Думаю, это лучшее решение.

person Artemix    schedule 30.08.2011
comment
Большое спасибо. Мне тоже нравится твой ответ. - person Lizzy; 02.09.2011