Jim*_*Lin 9 vb.net tabcontrol mouseclick-event winforms
我正在学习如何使用Visual Basic Express 2008开发Windows窗体应用程序,我的测试/学习应用程序有一个带有几个测试页面的TabControl(例如,3,这里的数字不相关).
现在,我在Tabcontrol上处理MouseClick事件,我似乎无法弄清楚如何获取单击的选项卡.我相信如果单击选项卡条的另一个位置,则不会触发MouseClick事件,因此必须单击选项卡.问题是,哪个标签?
任何帮助,将不胜感激.谢谢!
sta*_*ica 17
不要使用该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
Run Code Online (Sandbox Code Playgroud)
(请注意,您可能希望另外保护您的代码免受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
Run Code Online (Sandbox Code Playgroud)