oppor11s手机测评:解决VB中不能通过函数传递控件数组的问题(转)
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 01:15:22
VB中的函数可以使用数组形参,但是却不能传递控件数组,原因是VB中的控件数组和数组本身的构造方式不太一样,虽然同是在内存中顺序排列,但是调用方法却有小小区别,控件数组的使用更象是一个集合。数组的使用
仅仅只能通过Lboun和Ubound函数来获取数组上下标,而控件数组则可使用control.Lbound,control.ubound属性来获取上下标。数组中访问其元素只能使用Arr(Index)的方式,但控件数组则还可以通过control.item(index)来访问。由于这点小小的不同,造成了控件数组不能当作函数参数传递的问题。
现在我们通过2种方式来解决!!2种方式实现各不相同,所能应用的范围也不一样。
第一种使用对象数组的方法:(例子说明)
private sub SendControls()
Dim Arr_Chk() as CheckBox
Dim Int_I As Integer
ReDim Arr_Chk(Chk_Tmp.Lbound To Chk_Tmp.Ubound)
For Int_I =Chk_Tmp.Lbound to Chk_Tmp.Ubound
Set Arr_Chk(Int_I)=Chk_Tmp.Item(Int_I)
next
Call TestControls(Arr_Chk)
end sub
private sub TestControls(ByRef TestControls() As CheckBox)
Dim Int_I as Integer
For Int_I=Lbound(TestControls) To Ubound(TestControls)
debug.pring TestControls(Int_I).Name & " " & TestControls(Int_I).Value
next
End Sub
第二种方式,传递控件数组中一个元素。(这种方式有点取巧)
Private Sub SendControls()
call TestControls(Chk_Tmp.Item(Chk_Tmp.Lbound))
end sub
Private Sub TestControls(byval TestControl as CheckBox)
Dim TmpControl as Object
For Each TmpControl In Controls
If TmpControl.Name=TestControl.Name Then
Debug.Print TmpControl.Name & " " & TmpControl.Value
end if
Next
End Sub
仅仅只能通过Lboun和Ubound函数来获取数组上下标,而控件数组则可使用control.Lbound,control.ubound属性来获取上下标。数组中访问其元素只能使用Arr(Index)的方式,但控件数组则还可以通过control.item(index)来访问。由于这点小小的不同,造成了控件数组不能当作函数参数传递的问题。
现在我们通过2种方式来解决!!2种方式实现各不相同,所能应用的范围也不一样。
第一种使用对象数组的方法:(例子说明)
private sub SendControls()
Dim Arr_Chk() as CheckBox
Dim Int_I As Integer
ReDim Arr_Chk(Chk_Tmp.Lbound To Chk_Tmp.Ubound)
For Int_I =Chk_Tmp.Lbound to Chk_Tmp.Ubound
Set Arr_Chk(Int_I)=Chk_Tmp.Item(Int_I)
next
Call TestControls(Arr_Chk)
end sub
private sub TestControls(ByRef TestControls() As CheckBox)
Dim Int_I as Integer
For Int_I=Lbound(TestControls) To Ubound(TestControls)
debug.pring TestControls(Int_I).Name & " " & TestControls(Int_I).Value
next
End Sub
第二种方式,传递控件数组中一个元素。(这种方式有点取巧)
Private Sub SendControls()
call TestControls(Chk_Tmp.Item(Chk_Tmp.Lbound))
end sub
Private Sub TestControls(byval TestControl as CheckBox)
Dim TmpControl as Object
For Each TmpControl In Controls
If TmpControl.Name=TestControl.Name Then
Debug.Print TmpControl.Name & " " & TmpControl.Value
end if
Next
End Sub
请教VB问题. 如何传递控件数组到模块中?
VB中一个时间控件的函数问题
VB编程中,关于控件数组的问题?
函数值怎么传递给数组 VB
VB窗体中控件达到极限不能再创建更多的控件,请问怎么解决
vb中能否动态增加数组控件?
vb中函数的参数如何使用多维数组?
vb中关于参数传递的问题
如何把数组传递到函数中 (VB6)
VB 控件 二元数组
VB中如何给存储过程传递二进制数组
VB数组的问题!!!!!
vb.net中数组问题
关于VB中MSCOMM控件的问题
关于vb中控件拖动的问题?
vb中MSComm控件的问题
VB中media控件的问题
VB中media控件的问题
vb中ShockwaveFlash控件的属性问题?
vb中slider控件的使用问题
VB中关于RichTextBox控件的问题
在VB中如何选择一个控件数组
vb中如何用代码来编写控件数组
VB中Timer控件的问题,盼望高手能抽空看看帮忙解决,谢谢!