Vielleicht sind TabPages auch keine schlechte Idee.
Eigentlich hatte ich mir das so vorgestellt:
Wenn ich nur die Daten zu einer Person anzeigen lasse bzw Felder zur Dateneigabe zu dieser einen Person, dann müsste nur ein Panel mit einer UserControlDefinition angezeigt werden (so wie in Deinem Beispiel), z.B mit der UserControl4. Wenn ich aber jetzt eine Personengruppe habe, die alle eine UserControl4 PanelOberfläche brauchen und als Gruppe alle gleichzeitig angezeigt werden sollen, dann bräuchte ich noch weitere Panels (mit UserControl4) die dann für jede weitere Person, die zu der Gruppe dazukommen soll, z.B. auf Buttondruck sich unter dem letzten Panel anordnen.
Dann gibt es natürlich auch noch verschiedene Gruppen, also solche die dann ihre DatenAnzeige und Eingabe z.B. nach der Vorlage einer UserControl1 oder UserControl2 ... erhalten. Diese brauchen dann bei nur einer Person in der "Gruppe" auch wieder nur ein Panel auf Form1 (so wie in Deinem Beispiel) oder einer Form2.... Sollten aber später weitere Personen zu dieser Gruppe dazukommen, wäre es gut, wenn man eben auch hier diese Gruppe als ganzes anzeigen könnte, wobei aber eben für jede Person ein eigenes Panel mit den Datenfeldern angezeigt wird, so daß man Daten zur Gruppe schnell ohne großes umschalten zwischen den Personen eingeben kann. Wenn man nämlich alle Personen einzeln aufrufen muß, und sagen wir mal 6 Gruppen mit 3 bis 10 Personen hat, muß man sich aus dem Gesammtpool der Personen jeweils erst die richtige raussuchen (das kann dann bei 30 Personen den Arbeitsfluss stören, besonders wenn man oft zwischen den Personen einer Gruppe wechseln muss).
Deshalb wäre es gut, wenn man die ganze Gruppe zusammen auf Form1 anzeigen könnte, jede Person in ihrem "eigenen Panel" - aber eben pro Gruppe alle Panels nach der gleichen UserControlDefinition.
Klingt ziemlich kompliziert, es ist eigentlich vom Ideeansatz ganz einfach, nur schwierig genau zu formulieren. Ich hoffe ich habe die Idee jetzt einigermaßen verständlich aufgeschrieben.
Im Prinzip bräuchte ich einen Befehl, der mir per Code ein neues Panel erzeugt. Die Position könnte man nach der Position des vorherigen Panels ausrichten, dessen PositionsDaten in einer Variable gespeochert werden. Nach Anlegen des neuen Panels werden die PositionsDaten dieses Panels in die Variable übernommen, so daß sich dann ein ev. weiteres zu erzeugendes Panel daran ausrichten kann.
Dann müsste man die Panels auch wieder löschen können, wenn sie nicht mehr gebraucht werden, solange bis nur noch das allererste übrig bleibt.
Hoffentlich ist dies nicht zuviel Text, ist ja ganz schön viel geworden.