开发者

How to make arrays of button in vb .net 2005

hi there :) i just want to ask on how to make an array of buttons in vb .net 2005. It seems very different in vb6 'coz in vb6 you hav开发者_开发技巧e just to add an index on its property but in vb.net there is no index property. Can it be made by designing in on the form just like copying and pasting on the form in vb6?


VB.NET does not use control arrays by default. This is because events are handled differently from VB6.

If I remember right, this is how you'd write code for a control array, such as an array of CommandButton.

Private Sub Buttons_Click(index As Integer)
    Select Case index
        Case 1
            'write some code here'
    End Select
End Sub

The VB6 compiler would then parse the name of each sub in your file and assign them to the appropriate control's event. Thus the subroutine above would attach itself to each button on your form called Buttons and you could determine the button which was clicked by checking the index parameter.

In VB.NET, events are 'attached' to controls differently.
It is done manually by using the AddHandler statement or automatically by using the Handles keyword.

When you assign events to controls from the Form Designer, the IDE uses the Handles keyword to hook up each of the controls to their event handlers. Thus, you end up with something of this sort:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles Button.Click
    'your code goes here'
End Sub

With this method, you do not need a control array, as in VB6. You can simply hook up more Button Clicks or for that matter, any control's click by adding to the end of the statement like so:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
  Button1.Click, Button2.Click, Button3.Click, ListBox.Click
    'your code goes here'
End Sub

As can be seen, you just add the name of the control (e.g. Button2) and then follow it with .Click in order to 'hook' the control's click event to the subroutine.

The question then arises, how do you find which control (button) was clicked?
The answer is quite simple, test the sender parameter.

In .NET, typically, the control which is raising an event is always found in the sender parameter. So building on the code above, we'll have something like this:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
  Button1.Click, Button2.Click, Button3.Click, ListBox.Click

    If sender Is Button1 Then
        'do something'
    ElseIf sender Is Button2 Then
        'do another thing'
    ElseIf sender Is Button3 Then
        'do yet another thing'
    Else
        'do something different for the ListBox'
    End If
End Sub

If you've followed this far and understood it, you'll begin to realise why we do not use Control Arrays in VB.NET or for that matter, .NET in general any more.

Notify me if you have any more questions. Cheers!


Unlike in VB6, .NET allows you to create normal arrays of controls so there’s no need for the control collections of VB6.

Just use an array or a List(Of Control), fill it with controls and presto!, you’re done.

Use AddHandler if you want to add event handlers to these controls.

The Windows Forms designer no longer supports control arrays (in contrast to VB6’ form designer) – which makes sense: If you’ve got a control array, this is inherently dynamic so it cannot be meaningfully created at design time. Its size grows and shrinks dynamically at run-time depending on the actual number of controls that are needed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜