请教高手们,
1.如何用VB自定义控件做一个类型于WIN7的按钮效果。(鼠标放到BUTTON上则变色,移开则BUTTON恢复原色,我尝试过,但因为VB的控件只有MOUSEMOVE事件,没有MOVEOVER及MOVEOUT事件,如何做到?)2.VB自定义控件能否做一个窗体,将窗体样式改成WIN7效果。
以上问题,还请大家指教,谢谢!~

解决方案 »

  1.   

    他的意思是,鼠标离开控件后能知道,用于在次改变控件外观。控件离开的时候,控件的父控件应该能接受到鼠标移动事件,可以在这个时候处理。或者一直监视鼠标移动,并从鼠标坐标下得到控件,如果是某个控件,就调用这个控件的move过程,如果从鼠标坐标获取的控件和上一次获取的控件不同,就调用上次控件的鼠标离开过程,调用当前控件的move过程
      

  2.   


    我明白利用控件本身的MOVE和父控件的MOVE事件,但如果要做一个BUTON控件,父控件与控件本身相同大,无法实现父控件的MOVE事件(控件本身在上层)所以这个问题,还是很头痛!(我曾做成父控件大于子控件,这样就可以调用父控件的MOVE事件,但这不是最好的办法)大家继续发表看法!
      

  3.   

    在控件中
    Option Explicit
    Dim WithEvents X As Form
    Public Sub SetX()
        Set X = UserControl.Parent
    End SubPrivate Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Command1.Caption = "Hello"
    End SubPrivate Sub UserControl_Initialize()
    With Command1
        .Left = 0
        .Top = 0
    End With
    With UserControl
        .Width = Command1.Width
        .Height = Command1.Height
    End With
    End SubPrivate Sub UserControl_Resize()
    With Command1
        .Left = 0
        .Top = 0
    End With
    With UserControl
        .Width = Command1.Width
        .Height = Command1.Height
    End With
    End SubPrivate Sub x_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Debug.Print Time; "in control"
    Command1.Caption = Time & "in control"
    End Sub在放usercontrol的form1中
    Private Sub Form_Load()
    UserControl11.setx
    End Sub我不知道你要具体怎么做,我举得好像是实现你的需要了,这里.parent是一个form,所以设置的x属性是form类型
    如果把usercontrol放在一个picturebox里面,picturebox也可以是控件的容器,这个方法就不适合类似的,vb维护的parent是一个vb类,如果是个c的类也出错
      

  4.   

    谢谢spt_petrolor
    你说的很对,问题已解决!顺便问一下,我记得VB6.0中有一组XP风格控件,但找不到了,不知大家是否知道!