TabPage Click Events - PullRequest
       13

TabPage Click Events

12 голосов
/ 13 марта 2012

Я пытаюсь автоматически инициировать события на основе вкладки, на которую нажимают на элементе управления вкладками.

В режиме конструктора моей формы, когда я нажимаю на вкладках, в окне свойств появляется вкладка Система.Windows.Forms.TabControl, какая бы вкладка не была выбрана.Однако мне нужно щелкнуть по фактической странице, а не по вкладке, чтобы свойство сменило имя страницы, например, TaskListPage System.Windows.Forms.TabPage.

Мой tabcontrol называется Tabs, и я пыталсячтобы проверить это с помощью приведенного ниже кода, который должен отображать сообщение, основанное на опции вкладки.

 private void Tabs_SelectedIndexChanged(object sender, EventArgs e)

        {
            if (Tabs.SelectedTab == TaskListPage)
            {
                MessageBox.Show("TASK LIST PAGE");
            }
            else if (Tabs.SelectedTab == SchedulePage)
            {
                MessageBox.Show("SCHEDULE PAGE");
            }
        }

Когда я проверяю код выше, ничего не происходит.

Любая помощь вприветствует получение событий при нажатии на конкретную вкладку!

Спасибо

Ответы [ 2 ]

18 голосов
/ 13 марта 2012

Звучит так, как будто у вас его нет:

public Form1() {
  InitializeComponent();    
  Tabs.SelectedIndexChanged += new EventHandler(Tabs_SelectedIndexChanged);
}

Существуют и другие события, которые также могут предоставить вам эту информацию: Selected и Selecting.

void Tabs_Selected(object sender, TabControlEventArgs e) {
  if (e.TabPage == TaskListPage) {
    // etc
  }
}
0 голосов
/ 01 августа 2016

Эта первая часть идет в

    public Form1()
    {
// This is near the top of the form 1 code in form1.cs

        InitializeComponent();
        tabControl1.SelectedIndexChanged += new EventHandler(TabControl1_SelectedIndexChanged);
    }

Затем внизу в вашем обычном коде вы просто указываете, какой элемент управления должен иметь фокус после нажатия на вкладку. Который в моем текстовом процессоре, я использовал расширенное текстовое поле и элементы управления вкладками для имитации ленты msword. Элемент управления расширенного текста в моем случае находится не на вкладке, так как мои вкладки покрывают, возможно, 1 или 2 дюйма в верхней части формы

private void TabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {

        richTextBox1.Focus();
    }

Это то, что я называю своим текстовым процессором. Это здесь для тех, кто хотел бы использовать его. Журнал Ларри

...