Gewöhnlich löst man sowas eigentlich über DataTable, die man in den Datagridviews der verschiedenen Formen anzeigt.
Du kannst aber ein erzeugtes Datagridview während der Laufzeit einbetten, indem du es als Control einem übergeordneten Element, meist der Form, zuordnest:
Public Class Form1
Private Sub Form1\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim li As New XYZ
Me.Controls.Add(li.ABC())
End Sub
End Class
Class XYZ
Public DGV As New DataGridView
Function ABC()
DGV.Columns.Add("SpNr", "Nr")
DGV.Columns.Add("SpNN", "NName")
Return DGV
End Function
End Class
Bedenke dabei auch, dass du Top, Left, Height und Witdth setzen solltest, damit man etwas sieht.
ich habe hier jetzt kein Visual Studio installiert, deshalb aus dem Gedächtnis heraus:
Du machst das DGV in der Klasse XYZ Public.
In der Form instanzierst Du die Klasse XYZ:
Private MyXYZ As New XYZ
Dann montierst Du das DGV auf die Form:
Me.Controls.Add(MyXYZ.DGV)
Fertig.
Müsste eigentlich so funktionieren. Ich kann’s, wie oben erwähnt, im Moment nicht ausprobieren.
Gruß
Thomas