精华内容
下载资源
问答
  • 学习笔记:VB.net动态添加控件数组并传递事件控件数组和事件“中间人”动态添加控件 控件数组和事件 新建一个用户窗体,在定义控件数组时,不能Withevnets来定义数组 即使可以,为每一个数组成员编写事件也是非常...

    学习笔记:VB.net动态添加控件数组并传递事件

    控件数组和事件

    新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组
    在这里插入图片描述
    即使可以,为每一个数组成员编写事件也是非常麻烦的,考虑通过一个“中间人”来传递事件

    “中间人”

    用继承的方法为Button控件增加一些事件、属性和方法

    Public Class MyButton
        Inherits System.Windows.Forms.Button
    
        Public BtPtr As MyButton = Me
        Public BtNo As Long
    
        Public Event MyEventMouseClick()
        Public Sub RaiseMyEventMouseClick(No As Long)
            BtNo = No
            RaiseEvent MyEventMouseClick()
        End Sub
    
        Private Sub MyButton_MouseClick() Handles Me.MouseClick
            BtPtr.RaiseMyEventMouseClick(BtNo)
        End Sub
    End Class
    

    这里BtPtr是一个指针,每当新的实例一个MyButton控件的时候,让其指向某个特定的不在数组中的Button控件(这个控件在面板上不显示出来),这个特定的Button控件用来传递MouseClick事件
    BtNo记录了这个实例MyButton所在数组的序列号

    每当按键的MouseClick事件触发时,便会调用BtPtr的RaiseMyEventMouseClick方法来触发BtPtr的MyEventMouseClick事件并传递按键的代号BtNo

    动态添加控件

    新建一个窗体Form1,添加按钮Button1,并填写如下代码:

    Public Class Form1
    
        Dim WithEvents Bt As New MyButton
        Dim BtArr(10) As MyButton
        Dim i As Long = 0
        Dim p As Point
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            If Not i > 10 Then
    
                BtArr(i) = New MyButton
                BtArr(i).BtNo = i
                BtArr(i).BtPtr = Bt
                BtArr(i).Text = "按钮" & i
    
                p.X = 40
                p.Y = 40 + 30 * i
                BtArr(i).Location = p
                Me.Controls.Add(BtArr(i))
    
                i = i + 1
            End If
        End Sub
    
        Private Sub Bt_MyEventMouseClick() Handles Bt.MyEventMouseClick
            MessageBox.Show("按钮" & Bt.BtNo & "按下了")
        End Sub
    
    End Class
    

    Bt是一个MyButton控件,但并不在窗体上显示出来,所有实例化的BtArr()成员中的BtPrt都会指向Bt
    当Bt的MyEventMouseClick事件触发时,便会显示是几号按钮被按下了。

    展开全文
  • VB使用控件数组的演示,控件数组能大大减化VB6.0的工作量,因此是我们...运行窗口后,点击按钮,即可生成控件数组,并按照设置自动循环相应内容。若要参考控件数组的核心文件,请下载源码后解压,参见hardway.Frm文件。
  • VB控件数组生成国际象棋棋盘,VB利用数组程序生成国际象棋的棋盘程序,如果你对使用VB编写游戏感兴趣,那么这个小程序可能会对你有用处。
  • 控件数组的动态建立 设计窗体时建立控件组的第一个元素,并将其INDEX值赋为0 程序运行中使用LOAD方法,定义新的控件组元素,语法: LOAD 对象名(INDEX)值 使用UNLOAD方法可去除控件组中的元素。 INDEX值为...

     控件数组的动态建立
    设计窗体时建立控件组的第一个元素,并将其INDEX值赋为0
    程序运行中使用LOAD方法,定义新的控件组元素,语法:
    LOAD 对象名(INDEX)值
    使用UNLOAD方法可去除控件组中的元素。
    INDEX值为数值型,可使用变量控制
    对象名须与设计窗体时建立的第0个元素名相同
    新对象的属性值为默认值。

     

    实例:


    Public lngCount As Long    '放到最顶部

        Load Label4(lngCount)
        With Label4(lngCount)
        .Visible = True
        .Left = Label4(lngCount - 1).Left + 2900
        .Width = Label4(0).Width
        .Top = Label4(0).Top
        .Height = Label4(0).Height
        .Caption = lngCount & Label4(0).Caption
        .ZOrder Abs(i)      '设置层次
        End With
    展开全文
  • VB.NET中使用控件数组

    万次阅读 2010-05-20 08:40:00
    普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在 Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由: 1. 在循环中访问数组中控

    http://www.cnblogs.com/yunbo/archive/2009/08/13/1545657.html

     

    控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在 Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由:
    1.        在循环中访问数组中控件的属性。
    2.        向窗体动态添加新控件。
    3.        允许一个事件例程与多个控件连接 。
    控件数组的使用,极大的方便了开发人员。然而,刚刚从Visual Basic6.0(以下简称VB6.0)过渡到Visual Basic.Net(以下简称VB.NET)的初学者却发现,在VB.NET中似乎不能使用控件数组了。笔者仔细查阅了VB.NET的MSDN文档发现,在 VB.NET 中,确实不再支持控件数组。原因是,VB.NET对事件模型作了很大的改动,引入了另外一种数据类型――控件集合模型,使控件数组没有存在的必要。就像 VB6.0 中的控件数组可以共享事件一样,VB.NET 中的事件模型允许任何事件处理程序都可以处理来自多个控件的事件,这就允许创建属于不同类型但共享相同事件的控件组。
    所谓控件集合是指包含在一个容器中的所有控件的总和,能够创建控件集合的容器有:Form、Panel、GropBox等。程序运行时,可以通过访问容器的Control属性来得到该容器中的所有控件。
    下面将演示如何通过控件集合来使用控件数组:
    一、        直接使用Form容器的控件集合来使用控件数组:
    建立一个VB.NET项目,在Form1中添加三个TextBox控件,名称分别为:TextBox1、TextBox2、TextBox3,一个Button控件。
    双击Button,输入如下代码:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ‘下面的语句是通过数组元素的下标来访问Form中的每一个元素。
            Me.Controls.Item(0).Text = "集合中的第一个元素"
            Me.Controls.Item(1).Text = "集合中的第二个元素"
            Me.Controls.Item(2).Text = "集合中的第三个元素"
            Me.Controls.Item(3).Text = "集合中的第四个元素"
    End Sub
    运行项目后,点击Button,看到的结果是:Form1中的所有控件(包括Button自己)的Text属性都被修改了,同时还发现,最后加入的的控件变成了集合中的第一个元素(下标为0)。这个结果说明:
    Form1中的所有控件已经自动构成了一个控件集合(控件数组),这个特点使得建立控件数组变得非常简单。
    在访问这些控件时,除了可以通过控件名称直接访问外,还可以通过Contro.Item(n)属性按下标访问集合中的每一个控件;
    集合中控件的类型可以不相同,这点和VB6.0完全不同;
    集合中的下标顺序是按照加入控件的顺序倒排的;
    VB.NET中控件数组的特点让人稍感不适的是,控件数组的下标是按加入顺序的倒排续产生的,但程序员完全可以改变这个顺序:在代码编辑窗中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码:
    Me.Controls.Add(Me.Button1)
    Me.Controls.Add(Me.TextBox3)
    Me.Controls.Add(Me.TextBox2)
    Me.Controls.Add(Me.TextBox1)
    这个代码顺序就是控件数组的下标顺序,只要改变这个顺序就可以改变控件数组中每个以元素的下标。
    在Form中构成控件数组非常方便,但也有一个小问题:一般来说,Form中的控件往往有很多种,系统建立控件集合的时候将会把其中的所有控件放在同一个集合中,这样一来,程序员在写代码的时候有可能将每一个控件的下标混淆,为了解决这个问题,可以用Panel容器来根据需要将某类控件建立成控件数组,也就避免了上述问题。
    建立的方法非常简单:只需要在Form中添加一个Panel控件,然后将需要建立控件数组的控件加入其中即可,然后用:Panel.Control.Item(n)来访问其中的每一个控件。
    二、        用代码建立控件集合。
        建立一个VB.NET项目,在Form中添加三个TextBox和一个Button控件,在代码编辑窗口中输入如下代码:
    Dim TextboxArray As New ArrayList ‘定义一个数组例表
    Private Sub BiuldTextBoxArray() ‘过程用来将Form上的三个TextBox加入到数组例表中
         TextboxArray.Add(TextBox1)
          TextboxArray.Add(TextBox2)
          TextboxArray.Add(TextBox3)
    End Sub
    ‘让Form在启动的时候将三个TextBox控件加入到数组例表中,构成控件数组。
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        BiuldTextBoxArray()
    End Sub
    ‘编写Button点击事件代码,利用控件数组访问三个TextBox控件
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          TextboxArray(0).text = "文本框第一个元素"
          TextboxArray(1).text = "文本框第二个元素"
          TextboxArray(2).text = "文本框第三个元素"
    End Sub
        运行工程,点击Button,发现三个TextBox都被修改了,效果和前面的方法一样。
    三、        在程序中动态添加控件数组。
    前面定义的控件数组都是在设计阶段完成的,它要求,控件数组中的控件数量必须已知,也叫静态控件数组;但很多时候要求,控件数组中的控件数量要用程序的某些运行情况来确定,这就要求,控件数组中的控件要能实现动态添加。
    建立一个VB.NET工程,在Form上添加两个Button,其中,Button1用来添加动态控件数组;Button2用来修改数组中每个控件的属性。
    在代码编辑窗口中输入如下代码:
    Dim List As New ArrayList ‘定义一个例表对象,用来集合数组控件
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i As Integer
        For i = 0 To 4 ‘利用循环语句动态加入控件数组。
            Dim FirstTextBox As New TextBox ‘定义文本框对象
            Me.Controls.Add(FirstTextBox) ‘将一个文本框控件加入到Form上
            List.Add(FirstTextBox) ‘将文本框控件加入到例表集合中
            List.Item(i).top = i * List.Item(i).height + 20 ‘修改新加入控件在Form上的位置
            List.Item(i).left = 100
            FirstTextBox.TabIndex = i ‘修改新加入控件的TabIndex值
            List.Item(i).text = "TextBox" & i.ToString ‘修改默认文本。
        Next
    End Sub
    用循环来访问动态控件数组中的控件。
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim i As Integer
        For i = 0 To 4
            List.Item(i).text = "第 " & i.ToString & " 个元素"
        Next
    End Sub
    运行项目,先点击Button1,Form上将出现5个文本框,然后再点击Button2,修改这五个文本框的Text属性。
    从这个实例看出,VB.NET中动态加入控件数组与在VB6.0中实现动态数组有一个显著的不同:VB6.0中必须要有一个静态的“控件种子”,而在VB.NET中已经不需要了。
    四、        控件数组的事件响应。
    控件数组的最重要的特色之一就是让一组控件响应同一个事件,在事件例程中接收控件具体某控件的Index值来分别处理处理具体问题,这点已经在VB6.0中表现得淋漓尽致了,它在VB.NET中同样可以实现,只不过实现方式有了变化。由于在容器中的每一个控件只要不作特殊处理,都会自动构成了控件集合,这样,只要对原有的事件例程作少量修改,就可以非常方便的实现用一个事件例程响应某个集合中所有控件产生的事件。
    下面演示实现用同一个例程来处理两个Button和一个TextBox发出的Click事件。
    建立一个VB.NET项目,在Form上添加两个Button,和一个TextBox。
    在代码编辑窗口中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码并调整为下面的顺序:
    Me.Controls.Add(Me.TextBox1)
    Me.Controls.Add(Me.Button1)
    Me.Controls.Add(Me.Button2)
    输入如下代码:
    Private Sub mControl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, TextBox1.Click
            Select Case sender.tabindex
                Case 0
                    MessageBox.Show("你点击了 Button1 按钮")
                Case 1
                    MessageBox.Show("你点击了 Button2 按钮")
                Case 2
                    MessageBox.Show("你点击了 TextBox1 按钮")
            End Select
        End Sub
    在这段 代码中:Private Sub mControl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, TextBox1.Click 是一个自定义事件,在Handles后面的语句表示:该例程将响应Button1, Button2, TextBox1控件发出的Click事件,如果还有其他控件,也可以放在后面,每一个控件名称用“,”号隔开。
    运行项目,分别点击Form上面的三个控件就能体会到它的用法。

    ====================

    vb.net里面的动态控件数组的问题,这个动态控件数组在vb里面easy到极致,可是在vb.net里面却有点让人摸不着头脑。
    其实也很简单,因为vb.net和vb不同拉,来看看vb.net的动态控件数组如何实现。

     

    1、在form的头部定义一个公共的ArrayList类型的变量    

          Dim m_items As New ArrayList

    2、在程序中动态生成控件

           while (a<b)

               dim lblControl as Label= new Label

               lblControl .Text="你好"
               lblControl .dock=......top
               lblControl .autosize=false.
               ....

               me.controls.add(lblControl )'把动态产生的控件放到对应的区域


               '下面这个地方注意拉,
               m_items.Add(lblControl )'把这个label放到前面第一步定义的ArrayList中去
               AddHandler label.Click, AddressOf LblControlArrayClick '给这组动态控件定义click事件的触发函数LblControlArrayClick 。

           end while

    3、定义LblControlArrayClick 的click事件的触发函数,这个是和vb不同的地方的关键所在拉。

    '控件数组事件
         Private Sub LblControlArrayClick (ByVal sender As Object, ByVal e As EventArgs)


             Dim lblText As String
             lblText = CType(sender, Label).Text        '这里CType就是将触发事件的对象还原为Label对象,
                                                                             '有点像java里面的集合阿,放进去后再取出来的时候,要造型一下。
            msgbox ("所电击的动态控件的文字是:" & lblText)

         end sub

    好啦,就是这么简单,vb.net中的控件数组。
    如果你要为控件数组定义其他的触发事件,只要修改对应的触发就可以了。

    展开全文
  • VB.Net中创建使用控件数组

    千次阅读 2009-02-09 11:02:00
    首先创建一个Button类型控件数组: 1、创建“Windows应用程序”类型的工程,添加名为ButtonArray的类,并使该类继承 System.Collection.CollectionBase 类。System.Collections.CollectionBase类是.NET框架类库中为...

     首先创建一个Button类型控件数组:

       1、创建“Windows应用程序”类型的工程,添加名为ButtonArray的类,并使该类继承 System.Collection.CollectionBase 类。System.Collections.CollectionBase类是.NET框架类库中为集合操作提供抽象的基类,通过对它的继承可以为我们的ButtonArray类具备集合增加、删除、索引的功能。

       2、为ButtonArray类添加ParentForm属性,即控件组所在窗体,创建初始化函数(构造函数);

       3、为控件数组类增加AddItem方法,该方法在控件数组类中添加成员;

       4、为控件数组类增加RemoveItem方法,该方法在控件数组中删除一个成员。

      

       示例代码:

       Public Class ButtonArray

       Inherits System.Collections.CollectionBase

       Private ReadOnly ParentForm As System.Windows.Forms.Form

      

       Public Sub New(ByVal pForm As System.Windows.Forms.Form)

       ParentForm = pForm

       End Sub

      

       Default Public ReadOnly Property Item(ByVal index As Integer) As System.Windows.Forms.Button

       Get

       Return Me.List.Item(index) ' ButtonArray的List 属性从CollectionBase 继承

       End Get

       End Property

      

       Public Sub AddItem()

       Dim btnItem As New System.Windows.Forms.Button

       Me.List.Add(btnItem)

       ParentForm.Controls.Add(btnItem) '向窗体中增加控件

       btnItem.Tag = Me.Count 'Count属性从CollectionBase 继承

       btnItem.Top = Me.Count * 30

       btnItem.Left = 200

       btnItem.Text = "Button" & Me.Count.ToString

       AddHandler btnItem.Click, AddressOf btnItem_Click '绑定事件处理程序

       End Sub

      
    Public Sub AddItem(ByVal btnItem As System.Windows.Forms.Button)

       Me.List.Add(btnItem)
    AddHandler btnItem.Click, AddressOf btnItem_Click '绑定事件处理程序

       End Sub
    Public Sub RemoveItem()

       If Me.Count > 0 Then

       ParentForm.Controls.Remove(Me(Me.Count - 1))

       Me.List.RemoveAt(Me.Count - 1)

       End If

       End Sub

      

       Public Sub btnItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)

       '在这里编写控件数组对点击事件的响应

       '例如:

       MsgBox("点击:" & sender.GetType().ToString & CType(CType(sender, Button).Tag, String))

       End Sub

       End Class

      

      

      

       使用创建的控件数组

       在Form1中放置两个按钮Button1、Button2,分别测试控件数组的增添、删除。

       双击Form添加代码:

       Public Class Form1

       Inherits System.Windows.Forms.Form

      

       ……Windows窗体设计器生成的代码……

       Dim Buttons As New ButtonArray(Me)

      

       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Buttons.AddItem()

       End Sub

      

       Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

       Buttons.RemoveItem()

       End Sub

       End Class

      
    其他的控件数组也可以用类似的方式来实现
    例如 Label控件数组

       LabelArray.vb代码如下:
    Public Class LabelArray
    Inherits System.Collections.CollectionBase

       Private ReadOnly ParentForm As System.Windows.Forms.Form

       Public Sub New(ByVal pForm As System.Windows.Forms.Form)

       ParentForm = pForm

       End Sub

      

       Default Public ReadOnly Property Item(ByVal index As Integer) As System.Windows.Forms.Label

       Get

       Return Me.List.Item(index) ' ButtonArray的List 属性从CollectionBase 继承

       End Get

       End Property

      
    Public Sub AddItem(ByVal btnItem As System.Windows.Forms.Label)

       Me.List.Add(btnItem)

       AddHandler btnItem.Click, AddressOf btnItem_Click '绑定事件处理程序

       End Sub

      
    Public Sub btnItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)

       '在这里编写控件数组对点击事件的响应

       '例如:

       MsgBox("点击:" & sender.GetType().ToString & CType(CType(sender, Label).Tag, String))

       End Sub
    End Class

      
    使用创建的Label控件
    在Form1中放置两个按钮Label1、Label2

       双击Form添加代码:

       Public Class Form1

       Inherits System.Windows.Forms.Form

      
    #Region " Windows 窗体设计器生成的代码 "

       Public Sub New()
    MyBase.New()

       '该调用是 Windows 窗体设计器所必需的。
    InitializeComponent()

       '在 InitializeComponent() 调用之后添加任何初始化
    '用来绑定label
    BindArray()

       End Sub
    ……Windows窗体设计器生成的其他代码……

       #End Region
    Dim Labels As New LabelArray(Me)
    Public Sub BindArray()
    Me.Label1.Tag = "1111"
    Me.Label2.Tag = "222"
    Labels.AddItem(Me.Label1)
    Labels.AddItem(Me.Label2)
    End Sub
    End Class

       然后可以测试点击两个label可以显示相应的Tag的信息。

     

     

    11111111111111111111111111111111111111111

     

     

    在VB.NET中使用控件数组

    控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在 Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由:
    1.        在循环中访问数组中控件的属性。
    2.        向窗体动态添加新控件。
    3.        允许一个事件例程与多个控件连接 。
    控件数组的使用,极大的方便了开发人员。然而,刚刚从Visual Basic6.0(以下简称VB6.0)过渡到Visual Basic.Net(以下简称VB.NET)的初学者却发现,在VB.NET中似乎不能使用控件数组了。笔者仔细查阅了VB.NET的MSDN文档发现,在 VB.NET 中,确实不再支持控件数组。原因是,VB.NET对事件模型作了很大的改动,引入了另外一种数据类型――控件集合模型,使控件数组没有存在的必要。就像 VB6.0 中的控件数组可以共享事件一样,VB.NET 中的事件模型允许任何事件处理程序都可以处理来自多个控件的事件,这就允许创建属于不同类型但共享相同事件的控件组。
    所谓控件集合是指包含在一个容器中的所有控件的总和,能够创建控件集合的容器有:Form、Panel、GropBox等。程序运行时,可以通过访问容器的Control属性来得到该容器中的所有控件。
    下面将演示如何通过控件集合来使用控件数组:
    一、        直接使用Form容器的控件集合来使用控件数组:
    建立一个VB.NET项目,在Form1中添加三个TextBox控件,名称分别为:TextBox1、TextBox2、TextBox3,一个Button控件。
    双击Button,输入如下代码:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ‘下面的语句是通过数组元素的下标来访问Form中的每一个元素。
            Me.Controls.Item(0).Text = "集合中的第一个元素"
            Me.Controls.Item(1).Text = "集合中的第二个元素"
            Me.Controls.Item(2).Text = "集合中的第三个元素"
            Me.Controls.Item(3).Text = "集合中的第四个元素"
    End Sub
    运行项目后,点击Button,看到的结果是:Form1中的所有控件(包括Button自己)的Text属性都被修改了,同时还发现,最后加入的的控件变成了集合中的第一个元素(下标为0)。这个结果说明:
    Form1中的所有控件已经自动构成了一个控件集合(控件数组),这个特点使得建立控件数组变得非常简单。
    在访问这些控件时,除了可以通过控件名称直接访问外,还可以通过Contro.Item(n)属性按下标访问集合中的每一个控件;
    集合中控件的类型可以不相同,这点和VB6.0完全不同;
    集合中的下标顺序是按照加入控件的顺序倒排的;
    VB.NET中控件数组的特点让人稍感不适的是,控件数组的下标是按加入顺序的倒排续产生的,但程序员完全可以改变这个顺序:在代码编辑窗中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码:
    Me.Controls.Add(Me.Button1)
    Me.Controls.Add(Me.TextBox3)
    Me.Controls.Add(Me.TextBox2)
    Me.Controls.Add(Me.TextBox1)
    这个代码顺序就是控件数组的下标顺序,只要改变这个顺序就可以改变控件数组中每个以元素的下标。
    在Form中构成控件数组非常方便,但也有一个小问题:一般来说,Form中的控件往往有很多种,系统建立控件集合的时候将会把其中的所有控件放在同一个集合中,这样一来,程序员在写代码的时候有可能将每一个控件的下标混淆,为了解决这个问题,可以用Panel容器来根据需要将某类控件建立成控件数组,也就避免了上述问题。
    建立的方法非常简单:只需要在Form中添加一个Panel控件,然后将需要建立控件数组的控件加入其中即可,然后用:Panel.Control.Item(n)来访问其中的每一个控件。
    二、        用代码建立控件集合。
        建立一个VB.NET项目,在Form中添加三个TextBox和一个Button控件,在代码编辑窗口中输入如下代码:
    Dim TextboxArray As New ArrayList ‘定义一个数组例表
    Private Sub BiuldTextBoxArray()  ‘过程用来将Form上的三个TextBox加入到数组例表中
         TextboxArray.Add(TextBox1)
          TextboxArray.Add(TextBox2)
          TextboxArray.Add(TextBox3)
    End Sub
    ‘让Form在启动的时候将三个TextBox控件加入到数组例表中,构成控件数组。
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        BiuldTextBoxArray()
    End Sub
    ‘编写Button点击事件代码,利用控件数组访问三个TextBox控件
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          TextboxArray(0).text = "文本框第一个元素"
          TextboxArray(1).text = "文本框第二个元素"
          TextboxArray(2).text = "文本框第三个元素"
    End Sub
        运行工程,点击Button,发现三个TextBox都被修改了,效果和前面的方法一样。
    三、        在程序中动态添加控件数组。
    前面定义的控件数组都是在设计阶段完成的,它要求,控件数组中的控件数量必须已知,也叫静态控件数组;但很多时候要求,控件数组中的控件数量要用程序的某些运行情况来确定,这就要求,控件数组中的控件要能实现动态添加。
    建立一个VB.NET工程,在Form上添加两个Button,其中,Button1用来添加动态控件数组;Button2用来修改数组中每个控件的属性。
    在代码编辑窗口中输入如下代码:
    Dim List As New ArrayList ‘定义一个例表对象,用来集合数组控件
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i As Integer
        For i = 0 To 4 ‘利用循环语句动态加入控件数组。
            Dim FirstTextBox As New TextBox ‘定义文本框对象
            Me.Controls.Add(FirstTextBox) ‘将一个文本框控件加入到Form上
            List.Add(FirstTextBox) ‘将文本框控件加入到例表集合中
            List.Item(i).top = i * List.Item(i).height + 20 ‘修改新加入控件在Form上的位置
            List.Item(i).left = 100
            FirstTextBox.TabIndex = i ‘修改新加入控件的TabIndex值
            List.Item(i).text = "TextBox" & i.ToString ‘修改默认文本。
        Next
    End Sub
      用循环来访问动态控件数组中的控件。
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim i As Integer
        For i = 0 To 4
            List.Item(i).text = "第 " & i.ToString & " 个元素"
        Next
    End Sub
    运行项目,先点击Button1,Form上将出现5个文本框,然后再点击Button2,修改这五个文本框的Text属性。
    从这个实例看出,VB.NET中动态加入控件数组与在VB6.0中实现动态数组有一个显著的不同:VB6.0中必须要有一个静态的“控件种子”,而在VB.NET中已经不需要了。
    四、        控件数组的事件响应。
    控件数组的最重要的特色之一就是让一组控件响应同一个事件,在事件例程中接收控件具体某控件的Index值来分别处理处理具体问题,这点已经在VB6.0中表现得淋漓尽致了,它在VB.NET中同样可以实现,只不过实现方式有了变化。由于在容器中的每一个控件只要不作特殊处理,都会自动构成了控件集合,这样,只要对原有的事件例程作少量修改,就可以非常方便的实现用一个事件例程响应某个集合中所有控件产生的事件。
    下面演示实现用同一个例程来处理两个Button和一个TextBox发出的Click事件。
    建立一个VB.NET项目,在Form上添加两个Button,和一个TextBox。
    在代码编辑窗口中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码并调整为下面的顺序:
    Me.Controls.Add(Me.TextBox1)
    Me.Controls.Add(Me.Button1)
    Me.Controls.Add(Me.Button2)
    输入如下代码:
    Private Sub mControl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, TextBox1.Click
            Select Case sender.tabindex
                Case 0
                    MessageBox.Show("你点击了 Button1 按钮")
                Case 1
                    MessageBox.Show("你点击了 Button2 按钮")
                Case 2
                    MessageBox.Show("你点击了 TextBox1 按钮")
            End Select
        End Sub
    在这段 代码中:Private Sub mControl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, TextBox1.Click 是一个自定义事件,在Handles后面的语句表示:该例程将响应Button1, Button2, TextBox1控件发出的Click事件,如果还有其他控件,也可以放在后面,每一个控件名称用“,”号隔开。
    运行项目,分别点击Form上面的三个控件就能体会到它的用法。

     

    展开全文
  • 浅谈VB.net控件数组使用

    千次阅读 2014-09-18 17:28:05
    写的还好,能实现,有助于理解类和操作,但是vbnet的类操作还是有点怪,里面的数组B(14),还要借助BB来实体化,在循环中,每次BB的new是...动态生成控件,并对控件事件响应了。msgbox有显示,就可以了。
  • 一个在vs2008下 动态添加控件数组并获取所点击的控件属性(vb编程)的源码
  • vb6自动生成控件

    2019-05-10 14:40:52
    自动生成控件· Option Explicit Public muPlusKey() As Integer '创建Key键数组 Public muPlusValue() As String '创建Value值数组 Public max_index As Integer '定义公共变量,备用 Public key_index As ...
  • VB.NET中动态添加控件数组

    千次阅读 2006-10-25 16:18:00
     项目的需求又变了,我必须要在我的窗口上根据读取的文件不同添加不同的checkbox,我本以为vb.net和vb一样一定会有控件数组呢,结果网上的高手们都说vb.net是没有控件数组这个概念的。不过可以自己写一个类来实现...
  • vb.net动态控件数组

    千次阅读 2006-12-15 12:57:00
    vb.net里面的动态控件数组的问题,这个动态控件数组vb里面easy到极致,可是在vb.net里面却有点让人摸不着头脑。其实也很简单,因为vb.net和vb不同拉,来看看vb.net的动态控件数组如何实现。 1、在form的头部定义...
  • VB中,MSHFEXGRID不支持文本框,为了解决这个问题,一般的方法就是通过一个文本框的显示和隐藏,并获得表格单元的坐标,来实现向MSHFLEXGRID中录入数据的,具体方法我记得在本博中有,就不说了,自己搜一下 今天要说的是...
  • VB讲课笔记08:数组

    千次阅读 2018-03-12 18:01:30
    了解控件数组的概念、声明和使用。一、数组概念(一)数组定义数组是高级程序设计语言中数据组织的一种方式,是一种带有下标的结构,是按下标进行访问的一组下标变量的“集合”。数组可以是一维、二维或多维的,每一...
  • VB2008】控件数组

    2012-03-15 17:33:50
    vb.net里面的动态控件数组的问题,这个动态控件数组vb里面easy到极致,可是在vb.net里面却有点让人摸不着头脑。 其实也很简单,因为vb.net和vb不同拉,来看看vb.net的动态控件数组如何实现。 1、在form的头部...
  • VB6】控件数组正确使用方法分析 .

    千次阅读 2012-03-25 17:27:41
    创建数据驱动窗体 所谓数据驱动窗体就是根据所请求的数据的不同生成相应的窗体。举例来讲,假设你现在有一个...要做到这一点就得利用VB动态添加控件的功能。 动态创建控件 无论你想要创建何种类型的数据驱动窗
  • VB.NET中使用控件数组 [转]转载:http://5inet.blogcn.com/diary,113722257.shtml在VB.NET中使用控件数组(来源:天极论坛)控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别...
  • 从BASIC开始接触开发的占到了绝大多数,而使用VB起家开始接触win开发也是占了绝 大多数,从vbvb.NET变化确实不小,以前的很多的控件数组在.NET里却没有了,但是费点时间就OK了,这个是我的一个程序里用到的,...
  • 根据LISTVIEW里的数据数量(行数n),动态创建了相应的n个LABEL2控件数组(1-n),控件数组LABEL2(0)是手工创建的,其它LABEL(1-n)是LOAD方法动态生成。 现在我想点击LABEL数组中一个控件时,比如点LABEL(n...
  • VB 生成验证码的控件附实例调用例子,支持中文的验证码控件,内含Demo和验证码控件源码,使用时请添加中文验证码.ocx引用。验证码生成11到13的随机数数字随机数,0到6随机数,0到15随机数,从1到15的随机数,从0到14...
  • 添加控件数组

    2014-07-11 11:16:15
    在.NET里面我好像没有找到有关于控件数组的说明,...当时可以用控件数组作很多繁琐的事情,可以动态的生成一些功能和目的基本相同的一组文本框和一堆标签.这些控件数组响应同一个事件,我们在使用它的时候可以直接通过索引
  • VB.Net中创建使用控件数组 (转)[@more@]在vb.NET中创建使用控件数组XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office...
  • VB6是面向应用层面的,在桌面应用普及的时代,其开发各种应用软件,包括各种大型的ERP系统,虽然其有许多的缺点被一些程序员所诟病,然而瑕不掩瑜,真要尘封却也有人依依不舍。编程语言层出不穷,程序员们也是萝卜...
  • 控件数组VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现它.首先请看界面(){...
  • 刚学VB,最熟悉的控件就是TextBox了,下面将9个TextBox和1个CommandButton做一个数组的小例子:产生随机数并求和。 效果如下: 前面板的控件选取就不用多说了,来说说这个添加图片的用法:首先,在窗体上添加...
  • 设程序中有如下数组定义和过程调用语句:Dima(10)AsInteger……Callp(a)如下过程定义中,正确的是( )。A.PrivateSubp(aAsInteger)B.PrivateSubp(a()AsInteger)C.PrivateSubp(a(10)AsInteger)D.PrivateSubp(a(n)...
  • vb.net 自定义控件 自定义属性 UITypeEditor UI 类型编辑器 实例 提供一个示例 UITypeEditor,它使用 IWindowsFormsEditorService 显示用于用户输入的 Form。 IWindowsFormsEditorService 只能通过 PropertyGrid ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,222
精华内容 2,488
关键字:

vb用代码生成控件数组