TabControl的事件处理 [英] Event handling for TabControl

查看:81
本文介绍了TabControl的事件处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我正在尝试触发两个动态tabcontrol的click事件.我无法在第一个asign tabcontrol中触发点击事件. (无数组)


Hello All,

I m trying to fire click event of two dynamic tabcontrols. i am not able to fire click event in the first asign tabcontrol. (without array)


Public Class Form1
    Friend WithEvents MaxTab As TabControl

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ''dataentry
        MaxTab = New TabControl
        MaxTab.Name = "tabd"
        MaxTab.Top = 1
        MaxTab.Size = New System.Drawing.Size(Me.Width - 15, Me.Height - 80)
        MaxTab.TabPages.Add("dTAB1")
        MaxTab.TabPages.Add("dTAB2")

        AddHandler MaxTab.Click, AddressOf MaxTab_Click
        Me.Controls.Add(MaxTab)

        ''Report
        MaxTab = New TabControl
        MaxTab.Name = "tabr"
        MaxTab.Top = 1
        MaxTab.Size = New System.Drawing.Size(Me.Width - 15, Me.Height - 80)
        MaxTab.TabPages.Add("rTAB1")
        MaxTab.TabPages.Add("rTAB2")
        AddHandler MaxTab.Click, AddressOf MaxTab_Click
        Me.Controls.Add(MaxTab)

        Me.Controls("tabr").Visible = False
        Me.MaxTab.Refresh()
    End Sub

    Private Sub MaxTab_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaxTab.Click
        MessageBox.Show(MaxTab.SelectedTabPage.Text)
    End Sub
End Class

推荐答案

您需要处理TabControlMouseDown事件,并检查以查看哪个选项卡包含鼠标光标.这是通过检查每个选项卡(相应的选项卡,而不是TabPage本身)的边界矩形来完成的.这是一些应该有所帮助的修改后的代码.在选项卡上按L或R鼠标按钮时,MsgBox将为您提供正确的TabPage.

You need to handle the MouseDown event for the TabControl, and check to see which tab contained the the mouse cursor. This is done by checking the bounding rectangle of each tab (the corresponding tab, not the TabPage itself). Here''s some modified code that should help. When you press a L or R mouse button over a tab, a MsgBox will give you the proper TabPage.

Public Class Form1

  Friend WithEvents MaxTab As TabControl

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ''dataentry
    MaxTab = New TabControl
    MaxTab.Name = "tabd"
    MaxTab.Top = 1
    MaxTab.Size = New System.Drawing.Size(Me.Width - 15, Me.Height - 80)
    MaxTab.TabPages.Add("dTAB1")
    MaxTab.TabPages.Add("dTAB2")
    AddHandler MaxTab.MouseDown, AddressOf tabs_MouseDown

    Me.Controls.Add(MaxTab)

    ''Report
    MaxTab = New TabControl
    MaxTab.Name = "tabr"
    MaxTab.Top = 1
    MaxTab.Size = New System.Drawing.Size(Me.Width - 15, Me.Height - 80)
    MaxTab.TabPages.Add("rTAB1")
    MaxTab.TabPages.Add("rTAB2")
    Me.Controls.Add(MaxTab)

    Me.Controls("tabr").Visible = False
    Me.MaxTab.Refresh()
  End Sub

'here's where you get the tab page...
  Private Sub tabs_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MaxTab.MouseDown

    Dim r As Rectangle
    Dim ll As Integer

    For ll = 0 To MaxTab.TabPages.Count - 1
      r = MaxTab.GetTabRect(ll)
      If e.X >= r.Left And e.X <= r.Right And e.Y >= r.Top And e.Y <= r.Bottom Then
        MsgBox(MaxTab.TabPages(ll).Text)
        Exit For
      End If
    Next
  End Sub

End Class


这篇关于TabControl的事件处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆