Я создаю приложение Windows Forms в C#. Как я инициировал код, когда определенная вкладка в меню вкладки выбрана?
Я думаю, что это событие TabControl.SelectedIndexChanged
.
Просто посмотрите в MSDN. Я взял это оттуда. Предположим, вы назвали свой элемент управления вкладками tabControl1
.
Вам нужно подписаться на это событие, используя:
tabContrl1.TabControl.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
И добавить обработчик события
private void tabControl1_SelectedIndexChanged(Object sender, EventArgs e) {
MessageBox.Show("You are in the TabControl.SelectedIndexChanged event.");
}
TabControl
и его событие SelectedIndexChanged
сделают то, что вам нужно.
Например, у вас есть файл клиента с TabControl
в его части сведений формы. Вы хотите загружать отложенные транзакции этого клиента, когда пользователь щелкает вкладку Transactions
. Ваш код должен выглядеть как этот псевдокод:
public partial class CustomerMgmtForm : Form {
// Assuming the design already done, so the TabControl control exists on your form.
public CustomerMgmtForm() {
tabControl1.SelectedIndexChanged += new EventHandler(tabControl1_SelectedIndexChanged);
}
private void tabControl1_SelectedIndexchanged(object sender, EventArgs e) {
switch((sender as TabControl).SelectedIndex) {
case 0:
// Do nothing here (let's suppose that TabPage index 0 is the address information which is already loaded.
break;
case 1:
// Let's suppose TabPage index 1 is the one for the transactions.
// Assuming you have put a DataGridView control so that the transactions can be listed.
// currentCustomer.Id can be obtained through the CurrencyManager of your BindingSource object used to data bind your data to your Windows form controls.
dataGridview1.DataSource = GetTransactions(currentCustomer.Id);
break;
}
}
}
Следующее также полезно при игре с TabControl
.
Использование элементов TabControl.TabPageCollection
.
РЕДАКТИРОВАТЬ # 1
Для выбора конкретной вкладки ее можно идентифицировать только по 0, 1, 2, но не по имени вкладки?
Да, вы также можете увеличивать или уменьшать TabControl .SelectedIndex
, чтобы сделать конкретную TabPage
выбранной / активной.
Однако убедитесь, что вы не индексируете TabPage
из TabPages.Count - 1
, поскольку начальный индекс равен 0, иначе вы получите Выброшено исключение IndexOutOfRangeException
.
Чтобы продолжить наш пример, где у нас есть две страницы, информация об адресе и транзакции:
// Will automatically change the selected tab to the Transactions TabPage.
tabControl1.SelectedIndex = 1;
// Considering there a count of two TabPages, the first is indexed at 0, and the second at 1.
// Setting the SelectedIndex property to 2 will throw.
tabControl1.SelectedIndex = 2;
Примечание. Любое изменение свойства TabControl.SelectedIndex
вызовет запуск TabControl.SelectedIndexChanged
] мероприятие.
Проверьте, помогает ли этот вам. « SelectedIndexChanged
» может вам помочь.
Подробная информация из MSDN: здесь