Какая вкладка была нажата на tabcontrol событии MouseClick

Я изучаю, как разработать приложения Windows Forms с Visual Basic Express 2008, и мое приложение тестирования/изучения имеет TabControl с несколькими тестовыми страницами (3, например, число не релевантно здесь).

Теперь, я вручаю событие MouseClick на Tabcontrol, и я, может казаться, не в состоянии выяснить, как добраться, на какую вкладку нажали. Я полагаю, что событие MouseClick не запущено, если я нажимаю на другое место полосы вкладки, поэтому на вкладку, должно быть, нажали. Проблема, который был вкладкой?

Любая справка ценилась бы. Спасибо!

9
задан Jimmie Lin 12 February 2010 в 08:49
поделиться

1 ответ

Не используйте событие MouseClick , потому что для этой цели лучше подходит другое событие:
(Примечание: отредактировано после того, как OP опубликовал комментарий.)

TabControl имеет свойство SelectedIndex . Это отсчитываемый от нуля номер текущей выбранной вкладки. (Существует также другое свойство под названием SelectedTab , относящееся непосредственно к выбранному объекту страницы вкладки.)

Вы можете привязать обработчик событий к событию SelectedIndexChanged , чтобы получать уведомление всякий раз, когда пользователь выбирает другую вкладку:

Private Sub MyTabControl_SelectedIndexChanged(ByVal sender As Object, _
                                              ByVal e As System.EventArgs) _
            Handles MyTabControl.SelectedIndexChanged

    Dim indexOfSelectedTab As Integer = MyTabControl.SelectedIndex
    Dim selectedTab As System.Windows.Forms.TabPage = MyTabControl.SelectedTab

    ...

End Sub

(Обратите внимание, что вы можете дополнительно защитить свой код от случаев, когда SelectedIndex имеет недопустимое значение, например - 1 .)

Редактировать (добавлено после комментария OP) :

Если SelectedIndexChanged не работает для вас, потому что вам нужно поймать действие пользователя для всех кнопок мыши, вы можете использовать метод GetTabRect из TabControl следующим образом:

Private Sub MyTabControl_MouseClick(sender As Object, _
                                    e As System.Windows.Forms.MouseEventArgs) _
            Handles MyTabControl.MouseClick

    ...

    For tabIndex As Integer = 0 To MyTabControl.TabCount - 1
        If MyTabControl.GetTabRect(tabIndex).Contains(e.Location) Then
           ...  ' clicked on tab with index tabIndex '
        End If
    Next

    ...

End Sub
17
ответ дан 4 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

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