标题:教大家一个vb.net中使用控件数组的方法
只看楼主
sieistsonne
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-8-26
结帖率:0
已结贴  问题点数:20 回复次数:3 
教大家一个vb.net中使用控件数组的方法
很多人都说已经取消了控件数组这个好用的东西,互联网上提供了许多种替代方法,例如使用类。

这些方法太过复杂,且对于新手来说难以理解。其实根本没有取消控件数组,只是使用的方式略有区别,而且和vb6相比更加简单和自由。

这里给出一个例子:

第一步,新建一个窗体,拉大一点,在代码中加入:
    Dim L() As Label
    Private Sub aaa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        CType(sender, Label).Text = CType(sender, Label).Tag
    End Sub

第二步,画上一个按钮,在其click事件里加入如下代码:
        Dim i As Integer
        ReDim L(9)
        For i = 0 To 9
            L(i) = New Label
            L(i).Location = New Point(0, 30 * i)
            L(i).BackColor = Color.Aqua
            L(i).Tag = i
            L(i).Parent = Me
            AddHandler L(i).Click, AddressOf aaa_Click
        Next

大功告成!现在你运行这个程序,点一下按钮,就发现窗体左边出来一列label,而且你单击一个label,就会显示出相应的文字。

现在详细解释一下:
首先第一句,定义了一个label数组:Dim L() As Label   L是数组的名字,L后面加上一个空括号,它就不再是一个特定的控件,而是控件数组了。谁还敢说取消了控件数组???!!!
button1_click事件中代码解释如下:
        Dim i As Integer
        ReDim L(9)        把L的大小定义为包含十个label,这只是定义了L的大小,它里面其实还没有包含真正的label
        For i = 0 To 9
            L(i) = New Label       L(i)可以引用L中第i个label,这和vb6的用法一样,这里必须new一下,产生出一个真正的label放在L(i)的位置上,从这里开始,L里面就有了真正的label了。
            L(i).Location = New Point(0, 30 * i)          定义新label的位置,.net里面定义位置可以直接使用location属性,具体不再赘述
            L(i).BackColor = Color.Aqua           改一下颜色,否则看不出来
            L(i).Tag = i            tag属性是一个标记,你可以令其等于i,这样tag属性就表征了这个label在L中的位置,或者叫序号
            L(i).Parent = Me         注意一定要这一句,把新label的容器定义为窗体,也就是把label放到窗体中了,除了me之外,你也可以把它们放到任何一个已经有的容器控件中,灵活把?
            AddHandler L(i).Click, AddressOf aaa_Click          这一句是连接事件,把新label的click事件连接到aaa_click过程上,这样当你单击label的时候就会触发aaa_click中的代码。
        Next
最后是aaa_click过程:
    Private Sub aaa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        CType(sender, Label).Text = CType(sender, Label).Tag
    End Sub
sender这个东西指的是发出信号的对象,其实就是你所点击到的那个label,但是sender的类型是object,所以你在代码里用ctype把它改成label类型,然后进行各项适用于label的操作,这里只有一句话,就是把label的名字设定成它的序号。

好了,这就是中使用控件数组的方法,特别简单吧?
搜索更多相关主题的帖子: 控件数组 
2009-08-26 18:50
lycwu
Rank: 2
等 级:论坛游民
帖 子:8
专家分:20
注 册:2007-1-21
得分:20 
Mark
2009-09-05 02:45
zhzhszhjd
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-11-2
得分:0 
好贴!                  
2009-11-02 17:13
Sweet_Cigars
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-1-26
得分:0 
HAO!!!!!!!
2010-01-26 09:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-283781-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.331758 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved