Oppure

Loading
26/11/12 9:15
piter123
salve, ho 5 form figlie di una padre mdi.
All'interno di ogni form (tanto per fare un esempio) ho una label.
Ho creato una matrice di nome Mform dove inserisco le form per poter poi
in una routine inserire un ciclo che richiami la label di ogni form.
Ovviamente non funziona perchè non riesco ad agganciare la label alla matrice,
quando nel ciclo digito Mform(i). non mi compare la label1

Nel vecchio vb6 utilizzavo set per creare una matrice di form, con vbnet come si deve fare ?

Grazie

Mform(0) = form1
Mform(1) = form2
Mform(2) = form3
Mform(3) = form4
Mform(4) = form5


for i=0 to 4
Mform(i).label1.text="prova"
next
aaa
26/11/12 9:24
Thejuster
Dichiara i Child form come una variabile globale
e assicurati di rendere la label public altrimenti non la vedrai mai.

nel designer.

properità della label, Modifiers = Public

mire.forumfree.it/ - Mire Engine
C# UI Designer
26/11/12 12:16
piter123
dunque....

ho dichiarato in un modulo public Mform(4) as Form

ho settato la proprietà della label da Modifiers = Friend in Modifiers = Public


ma se all'interno di una routine scrivo MFBattl(1).Label1.Text = "ciao" mi dà errore
oltre che non vederla nel disigner, dove sbaglio ?
aaa
26/11/12 12:32
Thejuster
posta il codice.

senza un sorgente dove poter vedere se c'è un qualche errore è impossibile aiutarti
mire.forumfree.it/ - Mire Engine
C# UI Designer
28/11/12 18:20
ampeg
dovrai fare una conversione sul tipo, se le forms figlie sono classi istanziate dallo stesso tipo, ovvero a design time hai progettato un solo form figlio dal quale verranno create le successive nuove istanze, allora puoi usare questa iterazione per impostare quello che ti serve

    For Each frm As Form In Me.MdiChildren
      CType(frm, Form2).Label1.Text = "Hello"
    Next


"Me" è ovviamente il form container MDI nel quale va messo il codice, Form2 è il form figlio

altrimenti se sono forms differenti dovrai fare una conversione esplicita per ogni tipo di form figlio

    For Each frm As Form In Me.MdiChildren

      If TypeOf frm Is Form2 Then
        CType(frm, Form2).Label1.Text = "Hello"

      ElseIf TypeOf frm Is Form3 Then
        CType(frm, Form3).Label1.Text = "Hello"
      End If

    Next



dove Form2, Form3 sono i form figli progettati a design time
Ultima modifica effettuata da ampeg 28/11/12 18:23
aaa
29/11/12 8:46
piter123
dunque in vb6 facevo questo :



Dim FormS(4) As Form
Set FormS(0) = FormS0
Set FormS(1) = FormS1
Set FormS(2) = FormS2
Set FormS(3) = FormS3
Set FormS(4) = FormS4


e poi all'interno di una routine

For I = 0 To 4
With FormS(I)

.label1.caption="Hello"


end with
next I


Ultima modifica effettuata da piter123 29/11/12 8:48
aaa
29/11/12 17:20
piter123
Ampeg con il seguente codice che hai scritto utilizzando form instanziate dalla stessa
form figlio fai un ciclo dei quelle aperte. Ma se volessi scrivere la label di una sola delle
form aperte come faccio a indentificare una specifica form ?
Grazie

For Each frm As Form In Me.MdiChildren
CType(frm, Form2).Label1.Text = "Hello"
Next

Ultima modifica effettuata da piter123 29/11/12 17:26
aaa