Событие Windows Forms “На Избранной Вкладке”?

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

21
задан Peter Mortensen 25 September 2014 в 21:28
поделиться

3 ответа

Я думаю, что это событие 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.");
}
34
ответ дан 29 November 2019 в 06:49
поделиться

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 .

  1. TabControl.TabPages.Add ();
  2. TabControl.TabPages.Contains ();
  3. TabControl.TabPages.ContainsKey ();
  4. TabControl.TabPages.Insert ();
  5. TabControl.TabPages .Remove ();
  6. TabControl.TabPages.RemoveAt ();
  7. TabControl.TabPages.RemoveByKey ().

Использование элементов 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 ] мероприятие.

14
ответ дан 29 November 2019 в 06:49
поделиться

Проверьте, помогает ли этот вам. « SelectedIndexChanged » может вам помочь.

Подробная информация из MSDN: здесь

1
ответ дан 29 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: