我自制一个带图片的IMAGECHECK控件,在IMAGECHECK的VALUE为TRUE时,需将包含该IMAGECHECK控件的父窗体的所有其它IMAGECHECK控件的VALUE设为FALSE。但是该如何判断某个IMAGECHECK控件是本控件呢?
以下是我寻找同类控件的CODE,不过好象不行,运行时却老是提示堆栈溢出!
for each c in usercontrol.parent.controls
if typename(c)="imagecheck" then
end if
next
请高手指点!
以下是我寻找同类控件的CODE,不过好象不行,运行时却老是提示堆栈溢出!
for each c in usercontrol.parent.controls
if typename(c)="imagecheck" then
end if
next
请高手指点!
For i = 0 To UserControl.ParentControls.Count - 1
MsgBox UserControl.ParentControls.Item(i).Name
Next Form1
自己
其它1
其它2
………如果不放任何容器里如果把控件放在picture1里
Form1
Picture1
自己
其它1
其它2
………如果把pictur1放在Frame1
Form1
Frame1
Picture1
自己
其它1
其它2
………
看到上面的规律了吧,呵呵呵 祝你好运!
For i = 0 To UserControl.ParentControls.Count - 1
MsgBox UserControl.ParentControls.Item(i).Name
Next 此代码在控件内部,可以自己感受一下!
For i = 0 To UserControl.ParentControls.Count - 1
'枚举同类,获取ColGuid的值与FColGuid 相比,相同就是自己啦
Next
现在已经实现了,以下是我的CODE,好象有点繁,请指教!
Public Property Let Value(ByVal new_value As Boolean)
SetOtherChecks new_value
mValue = new_value
DrawCheck
PropertyChanged ( "Value ")
End Property
Private Sub SetOtherChecks(ByVal nowvalue As Boolean)
Dim i As Integer
Dim j As Integer
Dim k As Integer
If nowvalue = True Then
For i = 0 To UserControl.ParentControls.Count - 1
If UserControl.ParentControls.Item(i).Name = UserControl.Extender.Name Then
If UserControl.ParentControls.Item(i).Index = UserControl.Extender.Index Then '判断是否是控件自身
For j = i - 1 To 0 Step -1 '往回寻找父控件
If UserControl.ParentControls.Item(j) Is UserControl.ParentControls.Item(i).Container Then '判断是否为父控件
For k = j + 1 To i - 1 '设置控件自身前面的控件(在父控件中)属性
If TypeName(UserControl.ParentControls.Item(k)) = UserControl.Name Then
If UserControl.ParentControls.Item(k).Value = True Then
UserControl.ParentControls.Item(k).Value = False
End If
End If
Next
For k = i + 1 To UserControl.ParentControls.Count - 1 '设置控件自身后面的控件(在父控件中)属性
If UserControl.ParentControls.Item(k).Container Is UserControl.ParentControls.Item(i).Container Then
If TypeName(UserControl.ParentControls.Item(k)) = UserControl.Name Then
If UserControl.ParentControls.Item(k).Value = True Then
UserControl.ParentControls.Item(k).Value = False
End If
End If
Else
'Exit For
End If
Next
Exit For
End If
Next
Exit For
End If
End If
Next
End If
End Sub
http://expert.csdn.net/Expert/topic/1994/1994246.xml?temp=5.088443E-02
开两个贴我两边看挺麻烦的,不过就有两边的分可赚了,昨晚我一点多就睡了