具体是这样的,当生成这个控件的实例时,该控件可以获得包含它的容器中的其他控件集合,然后可以在这个控件的属性中选择集合中的某个控件,一旦选定,将该控件和选定空间绑定。我主要在写从属性中选定的地方遇到困难。请高人指点Private Parent As Variant
Private ControlName() As String
Private Distance As Integer
Private ParentControls As Variant
Private collParent() As VariantFriend Property Set BlindObject(LinkObj As Object)
Set Parent = LinkObj
PropertyChanged "BlindObject"
End PropertyFriend Property Get BlindObject() As Object
Set BlindObject = Parent
End PropertyPrivate Sub DownArrPic_Click()
If RollBlock.CurrentX = RollBG.Top - RollBG.Height Then
Else
    RollBlock.Top = RollBlock.Top + 24
    Parent.Top = Parent.Top + 24
End If
End SubPrivate Sub UpArrPic_Click()
If RollBlock.Top = RollBG.Top Then
Else
    RollBlock.Top = RollBlock.Top - 24
    Parent.Top = Parent.Top - 24
End If
End SubPrivate Sub UserControl_Initialize()
'Dim i As Integer
'Set Parent = UserControl.Parent
'For i = 0 To Parent.Controls.Count - 1
'    Set collParent(i) = UserControl.Parent.Controls(i)
'Next
End SubPrivate Sub UserControl_InitProperties()
Dim i As Integer
Set Parent = UserControl.ParentControls
For i = 0 To Parent.Count - 1
    ReDim Preserve collParent(0 To Parent.Count - 1) As Variant
    Set collParent(i) = Parent.Item(i)
Next
Me.ParentName (collParent())
'Set ParentControls = collParent()
End SubPublic Property Let LengthAccount(ByVal length As Integer)
Distance = length
PropertyChanged "LengthAccount"
End PropertyPublic Property Get LengthAccount() As Integer
LengthAccount = Distance
End Property'计算每按一下箭头滑块移动距离功能
Private Function LongPercent() As Integer
LongPercent = Int((RollBG.Height / LengthAccount) * 100)
End FunctionPrivate Sub UserControl_ReadProperties(PropBag As PropertyBag)
With UserControl
    .ScaleHeight = Parent.Height
    .ScaleWidth = 20
    .ScaleTop = Parent.Height - 10
    .ScaleLeft = Parent.Right
End With
UpArrPic.Top = Parent.Top
UpArrPic.Left = Parent.Right
DownArrPic.Top = Parent.Top - Parent.Height + DownArrPic.Height
DownArrPic.Left = Parent.Right
RollBG.Top = Parent.Top - UpArrPic.Height
RollBG.Left = Parent.Right
RollBG.Height = Parent.Height - UpArrPic.Height - DownArrPic.Height
RollBlock.Height = Int(RollBG.Height * LongPercent / 100)
RollBlock.Top = RollBG.Top
RollBlock.Left = Parent.Right'Dim i As Integer
'For i = 0 To Parent.Controls.Count - 1
'    ParentControls(i) = Parent.Controls(i).Name
'Next
'End Sub'Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
'Dim i As Integer
'Set Parent = UserControl.Parent
'Call PropBag.WriteProperty("ParentName", temp)
'
End SubPublic Property Set ParentName(ParentObject As Variant)
ParentControls = ParentObject
'PropertyChanged "ParentName"
End Property'------------------------
'Use propertypage code
Public Property Get ParentName() As Variant
ParentName = ParentControls
End Property
'------------------------'Public Property Get ParentName(ParamArray collParent() As Variant) As Variant
'Dim i As Integer
'For i = 0 To Parent.Count - 1
'    ParentName(i) = collParent(i).Name
'Next
'End Property

解决方案 »

  1.   

    就是想知道怎样实现自动让一个控件和其它控件绑定,比如我在窗体上放了一个VSCROLLBAR,然后这个控件有一个属性让我选择和在这个窗体上其它控件绑定,当我移动VSCROLLBAR时,绑定控件的内容也会相应移动?
      

  2.   

    我是想写一个滚动条的控件,比如我在一个窗体上放了一个picturebox,一个textbox,然后我想使用我的控件来作为它们的滚动条。当我把这个控件放置到窗体上时,我可以从控件的属性浏览器里选择一个类似于绑定其他对象的属性(就是自己要写的),通过选择可以让这个滚动条和picturebox或是textbox联系起来,而不用像VB自带scrollbar控件那样,写程序告诉scrollbar当产生事件时,哪个控件要有响应。