Я создаю приложение Windows Forms на С#. Как запустить код, когда выбрана определенная вкладка в меню вкладок?
Событие Windows Forms "On Select Tab"?
Ответ 1
Я думаю, что это событие 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.");
}
Ответ 2
TabControl
и SelectedIndexChanged
событие будет делать то, что вам нужно.
Например, у вас есть файл Customer с TabControl
в его части детали формы. Вы хотите загрузить ленивую нагрузку на транзакции этого клиента, когда пользователь нажимает на транзакции TabPage
. Ваш код должен выглядеть как этот псевдокод:
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 suppose that TabPage index 0 is the address information which is already loaded.
break;
case 1:
// Let 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.TabPages.Add();
- TabControl.TabPages.Contains();
- TabControl.TabPages.ContainsKey();
- TabControl.TabPages.Insert();
- TabControl.TabPages.Remove();
- TabControl.TabPages.RemoveAt();
- TabControl.TabPages.RemoveByKey().
Используя TabControl.TabPageCollection Members
.
РЕДАКТИРОВАТЬ № 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
.
Ответ 3
Чтобы выбрать конкретную вкладку, можно ли ее идентифицировать только 0, 1, 2, а не имя табуляции?
Вы можете сделать это, добавив прослушиватель событий к фактической вкладке, а не к элементу управления вкладкой.
Если у вас есть вкладка tabHistory, вы можете добавить следующую конструкцию в конструктор.
this.tabHistory.Enter += new System.EventHandler(this.tabHistory_Enter);
Затем просто добавьте свой метод, чтобы поймать событие.
private void tabHistory_Enter(object sender, EventArgs e)
{
MessageBox.Show("Hey! Ive got focus");
}
Ответ 4
Проверьте, поддерживает ли это . "SelectedIndexChanged
" может помочь вам.
Подробности из MSDN здесь