[VB.NET]在vb.net中有没有类似vb6控件数组的方法控制一组控件?

前端之家收集整理的这篇文章主要介绍了[VB.NET]在vb.net中有没有类似vb6控件数组的方法控制一组控件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在vb.net中有没有类似vb6控件数组的方法控制一组控件? 我一个窗口有15个label,名字分别为lab1~lab15,现在要赋值给它们,如果用: lab1.text = xxx lab2.text = xxx lab3.text = xxx ... ... 要累死我了,想用循环来实现,有啥好办法? 谢谢! __________________________________________________________________________ Dim lab() As Label = {lab1,lab2,lab3} 然后就可以用了。 __________________________________________________________________________ 那也要写lab1到lab15吧,我有很多这样的窗口,最多的label控件有24个,这样写还是太麻烦了。 __________________________________________________________________________ 15个label的赋值有规律还可以用循环,内容不同是不是还是需要一个一个赋值呀? __________________________________________________________________________ 就在定义的时候写一次就好了啊。 __________________________________________________________________________ 就是有规律才这样想啊,想一个方法可以套用在所有窗口上,不然一个个写太费神了 __________________________________________________________________________ 因为我要赋的值即等号右边可以用数组,所以我想控件也用数组,这样一个for循环就解决了... __________________________________________________________________________ 这样可以么? Public Class Form1 Private Sub Form1_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load Dim lab() As Label = {lab1,lab3} Dim v() As Integer = {1,20,300} For i As Integer = 0 To lab.GetUpperBound(0) lab(i).Text = v(i) Next End Sub End Class __________________________________________________________________________ 就是这个意思,不过对于Dim lab() As Label = {lab1,lab3} 的写法还是觉得太烦琐了,想一个方法自动添加一个窗口中的所有label控件到一个数组中,这样把这些做成一个函数,我就可以用在所有的窗体中了,而且只需要一条语句。 我只是这样希望而已,不知道能不能实现了 __________________________________________________________________________ Public Class Form1 Private Function GetLables() As Label() GetLables = Nothing Dim i As Integer = 0 For Each ctrl As Control In Me.Controls '' 遍历窗体上的控件 '' 如果控件类型为Lable,名字中有 "lab "就加入到数组中 If TypeOf ctrl Is Label And ctrl.Name.Contains( "lab ") Then i = Integer.Parse(ctrl.Name.Substring(3)) '' 取本来的编号,使其顺序一致 GetLables(i) = ctrl End If Next End Function End Class __________________________________________________________________________ 好像不对,GetLables(i) = ctrl 这一句会导致不能遍历控件,不知道为什么. __________________________________________________________________________ 我以前用过这种代码的,不记得有问题啊。请高手指点。 __________________________________________________________________________ 我用了arraylist来存放“遍历窗体上的控件”里找到的label控件, dim al as ArrayList al.add(lab) ''lab为找到的控件对象 al(1).text = xxx 以上可以赋值,不过al这个集合里label都是乱序的,就是说al(1)并不是原来的label1控件,可能是label5控件。 怎么让它们按照label的名字进行排序呢? __________________________________________________________________________ 如果排序问题结局,所有的问题都解决了。 急等~~~ -_-!! __________________________________________________________________________ 用magicbacon(Cannot help coding)提供的代码中的: i = Integer.Parse(ctrl.Name.Substring(3)) '' 取本来的编号,使其顺序一致 GetLables(i) = ctrl 这个思路稍作修改就可以了,我已经解决了,谢谢! __________________________________________________________________________ i = Integer.Parse(lab.Name.Substring(3)) '' 取本来的编号,使其顺序一致 al.Insert(i,lab) 代替 al.add(lab) 试试. __________________________________________________________________________ 我又慢了. __________________________________________________________________________ 我是马后炮大王. __________________________________________________________________________ 呵呵,我已经试过al.Insert(i,lab)是不行的,会报告说越界了。 其实就是用数组啦,arraylist我不用了。 谢谢。 __________________________________________________________________________ 晕,那是怎么搞的,我改了半天了。 __________________________________________________________________________ i = CInt(lab.Name.Substring(3)) '' 如果label的名字为labXXX,(XXX表示数字) al(i) = lab ''al 声明为数组就可以了 __________________________________________________________________________ 我晕 __________________________________________________________________________ 为什么label换成textBox就不行了呢 __________________________________________________________________________ 原文链接:https://www.f2er.com/vb/263915.html

猜你在找的VB相关文章