Ciao, purtroppo non posso scrivere qui il codice perche' solo il codice dell'usercontrol sono 1641 righe pero' posso essere piu' preciso almeno per quanto riguarda la prima parte del problema.

Come ho gia' detto anticipatamente questo prg e' un client tipo winmx, la questione è relativa all'entrata in chat.

Considera un forum dove c'e' una listview dove poter visualizzare le stanze di un server e una picture in cui all'interno c'e' l'usercontrol indicizzato della chat.

L'usercontrol è costituito dalla lista degli utenti presenti in quella chat, una richtextbox dove puoi leggere cosa scrivono gli altri utenti in quella chat e una Text box per poter scrivere i messaggi da inviare in chat.

Partiamo dall'inizio.

Ti sei connesso ad un server e successivamente passi alla visualizzazione di questo form.

In automatico il prg carica tutte le stanze presenti nel server e li visualizzi nella ListView precedentemente citata. A questo punto quando clikki sulla listview decidendo quindi in quale stanza entrare, il prg mette in primo piano la Pitcure e come tu mi hai insegnato carico l'usercontrol.

Chat.ZOrder 0


For i = 0 To Stanze_Aperte <- qui verifico se in quella stanza ero gia' entrato e quindi in tal caso non deve caricare una nuova stanza ma seplicemente visualizzarmi quella gia' precedentemente caricata.
If L_Canali.SelectedItem = VAR_GLOBALI.Canale(i) Then
Stanza(i).ZOrder 0
Exit Sub
End If
Next

' Qui cerco la nuova index per l'usercontrol Stanza

Dim NuovaStanza
Dim ii As Long
Dim v As Boolean

NuovaStanza = -1

On Error Resume Next

For ii = 1 To 100
v = Stanza(ii).Visible
If Err Then
Err.Clear
NuovaStanza = ii
Exit For
End If
Next ii

' Trovato l'index per l'usercontrol incremento il numero di stanze in cui sono entrato e carico sia l'usercontrol (Load Stanza(NuovaStanza))
e sia un pulsante indicizzato che mi permetera' di passare da una stanza all'altra.

Stanze_Aperte = Stanze_Aperte + 1
Load Stanza(NuovaStanza)
Stanza(NuovaStanza).Top = 0
Stanza(NuovaStanza).Left = 0
Stanza_Presente = NuovaStanza
Stanza(NuovaStanza).Visible = True
Stanza(NuovaStanza).ZOrder 0

Load Chat_P(NuovaStanza)
Chat_P(NuovaStanza).Visible = True

' Come caption e come Tiptextbox del pulsante gli inserisco il nome della stanza in cui sono entrato.

Chat_P(NuovaStanza).Caption = L_Canali.SelectedItem
Chat_P(NuovaStanza).ToolTipText = L_Canali.SelectedItem

' Dopodice' chiamo una routine che mi stabilisce le posizioni e le grandezze dei pulsanti.

Call Organizza_Pulsanti

' Memorizzo in un vettore il nome della stanza in cui sono entrato.

VAR_GLOBALI.Canale(NuovaStanza) = L_Canali.SelectedItem

For t = 1 To Stanze_Aperte
Call Stanza(t).Ridimensiona_Chat
Next

questa e' la routine inerente all'entrata in chat. Come puoi notare, gia' in questa parte di programma, quando carico le stanze e i pulsanti faccio :


Load Stanza(NuovaStanza)
Load Chat_P(NuovaStanza)

Teoricamente se stacco l'usercontrol da questo forum dovrei fare:

Load Form2.Stanza(NuovaStanza)
Load Form2.Chat_P(NuovaStanza)

ma come potrei far capire al prg di staccare la picture in cui c'e' l'usercontrol e metterla in un secondo form?
Posso lasciar invariata questa parte di codice e far in maniera tale che clikkando su un pulsante tutta la gestione della creazione dei pulsanti passi in una seconda finestra?