none
[VB.net] TabControl頁籤 RRS feed

  • 問題

  • 我新增了三個頁籤(每個頁籤加入的控制項不同),而每個TabPage名稱會隨著內容重點而改變,在正常使用下須點擊頁籤標題才能變換


    我想當滑鼠移到頁籤上面時,自動顯示此頁籤的內容(自動變換)


    可是我找了一下他的事件,也試了TabPage1.MouseEnter , TabPage2.MouseEnter , ..........  事件


    但無法徵測到滑鼠在頁籤上(頁籤標題名稱的位置),只可以徵測到標題名稱下面位置(控制項內)


    請問各先知有什麼方法可以做到呢?


    謝謝.

    2011年8月3日 下午 03:47

解答

  • Hi:

     Private Sub TabControl1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseMove
    
      Dim tc = CType(sender, TabControl)
    
      If (e.Y <= tc.ItemSize.Height) Then
       Dim w = 0
       For ti = 0 To tc.TabPages.Count - 1
    
        w += tc.GetTabRect(ti).Width
        If (e.X < w) Then
    
         tc.SelectedIndex = ti
    
         Exit For
        End If
       Next
       End If
     End Sub
    

     

    雖是C#的參考:MouseEnter or MouseHover in a TabPage
    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    • 已標示為解答 tle-Bee 2011年8月4日 上午 05:43
    2011年8月3日 下午 04:16
  • 您好

    請參考以下代碼

      Private Sub TabControl1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseMove
        For i = 0 To TabControl1.TabCount - 1
          If TabControl1.GetTabRect(i).Contains(e.Location) AndAlso TabControl1.SelectedIndex <> i Then
            TabControl1.SelectTab(i)
            Exit For
          End If
        Next
      End Sub

    相關發問

    TabControl MouseHover!


    歡迎參觀我的Blog.NET菜鳥自救會

    • 已標示為解答 tle-Bee 2011年8月4日 上午 05:43
    2011年8月3日 下午 05:19
    版主

所有回覆

  • Hi:

     Private Sub TabControl1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseMove
    
      Dim tc = CType(sender, TabControl)
    
      If (e.Y <= tc.ItemSize.Height) Then
       Dim w = 0
       For ti = 0 To tc.TabPages.Count - 1
    
        w += tc.GetTabRect(ti).Width
        If (e.X < w) Then
    
         tc.SelectedIndex = ti
    
         Exit For
        End If
       Next
       End If
     End Sub
    

     

    雖是C#的參考:MouseEnter or MouseHover in a TabPage
    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    • 已標示為解答 tle-Bee 2011年8月4日 上午 05:43
    2011年8月3日 下午 04:16
  • 換個角度想, 何必一定用TabControl ?

    如果我要做這個東西, 我一定會用Panel, 然後把原本各個TabPage的東西做成UserControl, 然後在Panel中置換.至於上面的頁籤, 你可以把Button做成平板狀, 這樣就可以用Mouse hover 了


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年8月3日 下午 05:07
    版主
  • 您好

    請參考以下代碼

      Private Sub TabControl1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseMove
        For i = 0 To TabControl1.TabCount - 1
          If TabControl1.GetTabRect(i).Contains(e.Location) AndAlso TabControl1.SelectedIndex <> i Then
            TabControl1.SelectTab(i)
            Exit For
          End If
        Next
      End Sub

    相關發問

    TabControl MouseHover!


    歡迎參觀我的Blog.NET菜鳥自救會

    • 已標示為解答 tle-Bee 2011年8月4日 上午 05:43
    2011年8月3日 下午 05:19
    版主
  • 當初也想到用大小位置來判斷...可是頁籤標題會隨著文字變換大小。

    原來大小位置是這樣判斷,還有可以用結構來判斷,多學了一點!感謝!

    2011年8月4日 上午 05:47