Previous | Index | Next 

[INFO] Double-clicking on a control array element at design-time creates a brand new event handler

VB Migration Partner converts elements of a control array to a standard control named arrayname_NNN, where arrayname is the name of the control array and NNN is a 3-digit value equal to the control’s Index property, for example MyControls_001. In most cases you don’t need to care about this detail, because you can typically access the control using the standard array syntax, e.g. MyControls(1). Additionally, you can handle a specific event from all the controls in the array by defining a method named arrayname_eventname pattern, as you do under VB6:

        ' this method handles the Change event of all controls in the MyControls array
        Private Sub MyControls_Change(ByRef index As Short)
            Debug.Print("New Text = " & MyControls(index))
        End Sub

Notice that this method isn’t decorated with the Handles keyword. In fact, the control support library deals with control array events in a special way and uses reflection to route the event to the method named after the arrayname_eventname pattern.

Of course, Visual Studio isn’t aware of control arrays and doesn’t deal with its elements in any special way. Therefore, if you double-click on MyControls(1) to create a event handler, the following code is created:

        Private Sub MyControls_001_Change() Handles MyControls_001.Change

        End Sub

If you need to create a handler for elements in the array after the conversion to VB.NET, you must manually define a method named arrayname_eventname, without any Handles clause.

 

Previous | Index | Next