急!在VB6中,当鼠标在Label控件上方时,Label文字的颜色变红,当鼠标移出后,文字恢复黑色。使用什么事件?
在一个窗体上有十多个这样的Label控件,都是这样。
最好能有源代码。

解决方案 »

  1.   

    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = 0
    End SubPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = &HFF
    End Sub
      

  2.   

    Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      Label1.ForeColor = &HFF00FF
      Label1.Tag = "1"
    End SubPrivate Sub Timer1_Timer()
      Dim pnt As POINTAPI
      Dim X As Long
      Dim Y As Long
      GetCursorPos pnt
      ScreenToClient Me.hWnd, pnt
      X = pnt.X * Screen.TwipsPerPixelX
      Y = pnt.Y * Screen.TwipsPerPixelY
      
      If Label1.Tag = "1" Then
          If X < Label1.Left Or Y < Label1.Top Or X > (Label1.Left + Label1.Width) Or Y > (Label1.Top + Label1.Height) Then
            Label1.ForeColor = &HFF0000
            Label1.Tag = "0"
          End If
      End If
      
    End Sub把TIMER的时间间隔为20
      

  3.   

    '在窗体上加一个Label1
    '--------------------------
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = vbBlack
    End SubPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = vbRed
    End Sub
      

  4.   

    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = 0
    End SubPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = &HFF
    End Sub
    对的
      

  5.   

    Label1_MouseMove
    内容同linfuyong
      

  6.   

    哎,大家都说啦,俺说啥,用MouseMove事件
      

  7.   

    有没有更加节省的办法,大家注意,有多达10多个这样的Label阿!
      

  8.   

    把label做成数据, 一个事件里就可以了处理了。Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = vbBlack
    End SubPrivate Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)    Label1(Index).ForeColor = vbRed     '这里index就是控件的编号了100个label都是这句话控制 End Sub
      

  9.   

    简单的话,把label1控件做成数组:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim i As Integer'这里是处理当鼠标移开label控件时,所有label恢复黑色
    For i = Label1.LBound To Label1.UBound
       Label1(i).ForeColor = 0
    Next i
       
    End SubPrivate Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)    Label1(Index).ForeColor = vbRed   'index就是控件编号了,所有label控件就这一句话变红色End Sub
      

  10.   

    顺便问一句Label1做成数据,怎个搞法?
    谢谢!
      

  11.   

    控件做成数组:  先添一个控件 label1,然后复制该控件,在窗口上粘贴,vb会提示你是否创建该数组控件?     
        你按是,然后连续粘够你想要的label, 数组编号从 0-N编,由于数组控件名称全是label1, 所以label1.index为编号标识.    在该控件的任何事件中,都有一个index为标识识别是属于哪一个label产生的事件。
      

  12.   

    我以前也试过,mousemove里要加判断是vbred或vbblack,不然老是要执行里面的赋值语句但实际运行时有点问题,我也没想出好办法:如果label数量多而且距离近的话,鼠标从一个label快速移到另一个label时form_mousemoves根本反应不过来,这样就可能有两个或多个label是vbred。
      

  13.   

    先变成控键组,再用mousemove事件
      

  14.   

    想想嘛!鼠标移来移去的!肯定就那几个鼠标事件嘛!MouseMove()
      

  15.   

    这个....基本上.........很难!label没有hwnd,所以没有办法真正的检测到mouseout事件你可以用textbox然后用3个API:
    setcapture/releasecapture/windowfrompoint来确定mouseout事件你可以把一个窗口半遮住textbox
    鼠标从窗口移到texbox上
    此时textbox变色
    在从textbox移回窗口上
    textbox恢复这说明是真正的mouseout否则都是粗糙的mouseout
    我记的曾经有人用drag,事件方法实现了类似的mouseout但是当时没有仔细看
      

  16.   

    猪者  Label1.ForeColor = vbBlack  这个运行时,红的可能是“label1”这几个汉字而不是label了吧
      

  17.   

    要是刚好有个label在窗体的边上,不小心稍快地向外一拉鼠标, 不就露了吗?
      

  18.   

    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = 0
    End SubPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Label1.ForeColor = &HFF
    End Sub