Originariamente inviato da Veronica80
niente non ne vengo a capo! E' davvero molto complessa la questione
Io ci sono arrivato con una soluzione diversa da quella di Eziogsv anche se devo ancora approfondire i "concetti"...quindi posto il tuo codice con le "modifiche" per farlo funzionare ed evito spiegazioni su Delegate e Invoke per non scrivere probabili razzate
...
codice:
'modifica
Delegate Sub panel1_add(ByVal tbox As TextBox)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
mioBGW.RunWorkerAsync()
End Sub
Private Sub mioBGW_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles mioBGW.DoWork
Try
Dim y As Integer = 3
Dim max As Integer = 500
For i = 1 To max
Dim mioTxt As New TextBox
mioTxt.Location = New System.Drawing.Point(3, y)
mioTxt.Name = "TextBox" & i
mioTxt.Text = mioTxt.Name
mioTxt.Size = New System.Drawing.Size(224, 20)
mioTxt.TabIndex = i
mioTxt.Visible = True
y += 25
'modifica
panel1_add_tbox_deleg(mioTxt)
Next
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Errore in " & ex.Source)
mioBGW.CancelAsync()
End Try
End Sub
Private Sub mioBGW_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles mioBGW.RunWorkerCompleted
MsgBox("FINITO!", MsgBoxStyle.Information, "Conferma")
End Sub
'modifica
Private Sub panel1_add_tbox(ByVal tbox As TextBox)
Panel1.Controls.Add(tbox)
End Sub
'modifica
Private Sub panel1_add_tbox_deleg(ByVal tbox As TextBox)
Dim a As New panel1_add(AddressOf panel1_add_tbox)
Invoke(a, New Object() {tbox})
End Sub
Oltre al link a msdn postato da Oregon puoi dare una lettura a questo:
http://msdn.microsoft.com/it-it/library/ms172879.aspx
e le relative procedure per provare a chiarirti le idee.