VB.Net is superior to VB6, no questions. The question is that in VB.Net there are many ways to achieve the goal. I don’t know exactly what is that you want to do, but JM’s suggestion using TableLayoutPanel is more efficient I think; it solves the design issue automatically.

Now, in VB.Net you can declare a control in runtime and add it to an array or to a list. Also you can add a handler for what ever event you want. I don’t know why you need the second array or two dimensional array but what I understand you have some data that is related to the text box than why not use the “Tag” property of the textbox control and save there whatever object /data you want.

As you can see there are so many ways of doing this but I am not sure which way is the best since I don’t have the clear picture of what you want to do.