Label有天生的缺陷
不好做的对于有句柄的控件就好办了
用TrackMouseEvent跟踪鼠标http://zyl910vb.51.net/vb/gui/MouseLeave.htm右击连接,目标另存为
注意把下载后的*.zip.jpg改名成*.zip

解决方案 »

  1.   

    可以这样实现,大家探讨一下!
    用到了Form和Label的MouseMove事件,但不用API
    在Label的MouseMove中
     if a = false then Label1.BlackColor = ........ '改变值
    在Form的MouseMove中(下边的代码放在Label所在的容器中)
     a = true 
     Label1.BlackColor = ...... '原值
      

  2.   

    to: ipqn(蚂蚁)兄
    用到了Form和Label的MouseMove事件后,Label的Click事件后还起作用吗?
      

  3.   

    用了MOUSEMOVE,CLICK当然还起作用:)至于楼上这位兄弟说的不能及时变更的问题,只要两个Label不紧贴着,空出些距离来,就应该没问题,现在的机器处理这些应该绰绰有余了吧,除非您还用着386:)菜鸟意见,互相讨论
      

  4.   

    这个不会影响其他的事件!
    但是有个问题就是,如下操作不会发生!在Label上按下鼠标,然后把鼠标移出Label(移动到Label所在的容器中),这时Label的背景色不会变回去!这可我也不知道怎样解决,大家讨论下!
      

  5.   

    to: ipqn(蚂蚁)兄
    谢谢!你的方法行的通,刚才调试时出了点错误,现在行了!
    to: zyl910(910:分儿,我来了!) 
    谢谢你的回答,你的程序我看了,写的很好,能从中学到不少东西!
    马上结贴!
      

  6.   

    label_mousemove label.backcolor=....
     form_mousemove    label.backcolor=变回来
      

  7.   

    to:ipqn(蚂蚁) 
    我试过了,能变回去啊!等一下我把源码贴出来,你也把源码贴出来吧!
      

  8.   

    form为主表单,label为form上的控件数组index为0,frame1为form上的控件,label1为frame1上的控件,comand1为frame1上的控件
    Dim Oindex As Integer
    Dim a As IntegerPrivate Sub Command1_Click()
        Frame1.Visible = False
    End Sub
    Private Sub Form_Load()
        Dim i As Integer
        For i = 1 To 7
            Load Label(i)
            With Label(i)
                .Visible = True
                .Top = Label(i - 1).Top + Label(i - 1).Width
                .Left = Label(i - 1).Left + Label(i - 1).Width + 100
                .Caption = "aa"
            End With
        Next i
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        a = (0 <= X) And (X <= Label.Item(Index).Width) And (0 <= Y) And (Y <= Label.Item(Index).Height)   '计算鼠标的移动是否在Command1里面
        If a = False Then
           Label.Item(Oindex).BackColor = &H8000000B
        End If
    End Sub
    Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    a = (0 <= X) And (X <= Label1.Width) And (0 <= Y) And (Y <= Label1.Height)
        If a = False Then
        Label1.BackColor = &H8000000B
        End If
    End SubPrivate Sub Label_Click(Index As Integer)
        Frame1.Visible = True
        Frame1.Top = Label.Item(Index).Top
        Frame1.Left = Label.Item(Index).Left
    End Sub
    Private Sub Label_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
        a = (0 <= X) And (X <= Label.Item(Index).Width) And (0 <= Y) And (Y <= Label.Item(Index).Height)
        Oindex = Index
        If a Then
        Label.Item(Index).BackColor = &HFFC0C0
        End If
    End SubPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        a = (0 <= X) And (X <= Label1.Width) And (0 <= Y) And (Y <= Label1.Height)
        If a Then
        Label1.BackColor = &HFFC0C0
        End If
    End Sub
      

  9.   

    to: ipqn(蚂蚁) 
    那有什么比较聪明的方法吗?