tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルどのタブページにMouseEnterイベントが発生したか取得したい
記事No8213
投稿日: 2008/09/24(Wed) 17:52
投稿者皐月
こんにちは、いつもお世話になっております。VB2005でプログラムを作成しております。
TabControlを利用していくつかタブページを作り、ToolTipを使用してタブの上にマウスが乗るとタブの中の内容の概要が表示されるようにしたいと思っています。

TabControlのイベントのMouseEnterでTabControl上に矢印のアイコンがあることを判別したときにアイコンがどのタブページ上にのっているのかも判断したいのですが可能でしょうか?

また、連続して違うタブページに移ったときにもMouseEnterが発生するようにしたいと思っています。イベントが起こるのは今の状態ではTabControl1上ですので、一度マウスを別の場所に持っていかないとMouseEnterのイベントが発生しない状態です。アイコンがのっているタブから違うタブに移動したときにふたたびMouseEnterを発生させることは可能でしょうか?

同じ動作ができるのでしたら、上記の方法に拘りません。どうか、宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: どのタブページにMouseEnterイベントが発生したか取得したい
記事No8214
投稿日: 2008/09/24(Wed) 23:49
投稿者花ちゃん
下記ではダメでしょうか?

Private Sub TabControl1_MouseMove(ByVal sender As Object, _
      ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseMove
   Dim i As Integer = 0
   For i = 0 To TabControl1.TabCount - 1
      If TabControl1.GetTabRect(i).Contains(e.X, e.Y) Then
         Me.ToolTip1.SetToolTip(Me.TabControl1, TabControl1.TabPages(i).Name)
      End If
   Next
End Sub

[ツリー表示へ]
タイトルRe^2: どのタブページにMouseEnterイベントが発生したか取得したい
記事No8219
投稿日: 2008/09/25(Thu) 12:03
投稿者皐月
はなちゃん、こんにちは。お返事ありがとうございます。
はなちゃんに教えていただいたソースを利用して以下のようにしました。

    Private Sub TabControl1_MouseMove(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseMove

        Dim i As Integer = 0

        For i = 0 To TabControl1.TabCount - 1
            If TabControl1.GetTabRect(i).Contains(e.X, e.Y) Then
                Select Case i
                    Case 0
                        Tabmsg = My.Resources.SetTabmsg001
                    Case 1
                        Tabmsg = My.Resources.SetTabmsg002
                    Case 2
                        Tabmsg = My.Resources.SetTabmsg003
                    Case 3
                        Tabmsg = My.Resources.SetTabmsg004
                    Case 4
                        Tabmsg = My.Resources.SetTabmsg005
                    Case 5
                        Tabmsg = My.Resources.SetTabmsg006
                    Case 6
                        Tabmsg = My.Resources.SetTabmsg007
                    Case 7
                        Tabmsg = My.Resources.SetTabmsg008
                End Select
            End If
            If Tabmsg <> tabmsg2 Then
                Me.ToolTip1.SetToolTip(Me.TabControl1, Tabmsg)
                tabmsg2 = Tabmsg
            End If
        Next
    End Sub

 ※ tabmsg,tabmsg2はグローバルです

メインで動作させてる部位にタイマーを使用して処理している部分があるためそのままではちらつきが生じてしましますので、ToolTipで表示されるのをマウスが乗っている場所が変化したときだけにしてみました。
アドバイスありがとうございました。

[ツリー表示へ]