Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - vbnet matrice di form
Forum - C# / VB.NET - vbnet matrice di form

Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 10:15
Lunedì, 26/11/2012
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

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:24
Lunedì, 26/11/2012
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



PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 13:16
Lunedì, 26/11/2012
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 ?

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:32
Lunedì, 26/11/2012
posta il codice.

senza un sorgente dove poter vedere se c'è un qualche errore è impossibile aiutarti


PM Quote
Avatar
ampeg (Normal User)
Pro


Messaggi: 124
Iscritto: 21/04/2011

Segnala al moderatore
Postato alle 19:20
Mercoledì, 28/11/2012
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

Codice sorgente - presumibilmente VB.NET

  1. For Each frm As Form In Me.MdiChildren
  2.       CType(frm, Form2).Label1.Text = "Hello"
  3.     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

Codice sorgente - presumibilmente VB.NET

  1. For Each frm As Form In Me.MdiChildren
  2.  
  3.       If TypeOf frm Is Form2 Then
  4.         CType(frm, Form2).Label1.Text = "Hello"
  5.  
  6.       ElseIf TypeOf frm Is Form3 Then
  7.         CType(frm, Form3).Label1.Text = "Hello"
  8.       End If
  9.  
  10.     Next



dove Form2, Form3 sono i form figli progettati a design time

Ultima modifica effettuata da ampeg il 28/11/2012 alle 19:23
PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 9:46
Giovedì, 29/11/2012
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 il 29/11/2012 alle 9:48
PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 18:20
Giovedì, 29/11/2012
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 il 29/11/2012 alle 18:26
PM Quote