Я изучаю, как разработать приложения Windows Forms с Visual Basic Express 2008, и мое приложение тестирования/изучения имеет TabControl с несколькими тестовыми страницами (3, например, число не релевантно здесь).
Теперь, я вручаю событие MouseClick на Tabcontrol, и я, может казаться, не в состоянии выяснить, как добраться, на какую вкладку нажали. Я полагаю, что событие MouseClick не запущено, если я нажимаю на другое место полосы вкладки, поэтому на вкладку, должно быть, нажали. Проблема, который был вкладкой?
Любая справка ценилась бы. Спасибо!
Не используйте событие 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