Inserisci un Form VUOTO al tuo progetto e sostituisci TUTTO il contenuto con questo codice:

codice:
Public Class FormControlliRunTime
    Private Button1 As New Button
    Private TabControl1 As New TabControl
    Private myDatagrid As DataGridView
    Private myLabel As Label

    Private Sub Form4_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.Size = New Size(800, 500)
        Button1.Text = "Aggiungi Griglie"
        Button1.Location = New Point(10, 10)
        TabControl1.Location = New Point(10, 60)
        TabControl1.Size = New Size(600, 300)
        TabControl1.TabPages.Add(New TabPage With {.Text = "TabPages1"})
        TabControl1.TabPages.Add(New TabPage With {.Text = "TabPages2"})
        AddHandler Button1.Click, AddressOf Button1_Click
        Me.Controls.Add(Button1)
        Me.Controls.Add(TabControl1)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        For Each tb In TabControl1.TabPages
            myDatagrid = New DataGridView
            myLabel = New Label
            myDatagrid.Name = "Griglia " & TabControl1.TabPages.IndexOf(tb)
            myDatagrid.Size = New Size(500, 150)
            myDatagrid.Location = New Point(0, 30)
            myLabel.Location = New Point(0, 10)
            myLabel.Text = myDatagrid.Name
            DirectCast(tb, TabPage).Controls.Add(myDatagrid)
            DirectCast(tb, TabPage).Controls.Add(myLabel)
        Next
    End Sub
End Class
Ovviamente cerca di capirne il senso...se hai bisogno siamo qui....
Ciao..