Подтвердить что ты не робот

Событие Windows Forms "On Select Tab"?

Я создаю приложение Windows Forms на С#. Как запустить код, когда выбрана определенная вкладка в меню вкладок?

4b9b3361

Ответ 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 здесь