Newsgroup: it.comp.lang.visual-basic
Titolo: [VB .NET] Chiamare proprietà di una MDIChild da una MDIParent

Ciao a tutti,
Ho iniziato da poco ad usare VB .NET, prima usavo VB 6, ed ho alcuni
problemi. Ho creato un'applicativo MDI, con un MDI Parent (con una toolbar)
e una MDI child (contenente una PictureBox).
Da un pulsante della toolbar della MDIParent devo caricare un'immagine nella
PictureBox della MDIChild correntemente attiva. In VB6, dalla MDIParent
facevo "Me.ActiveForm.Picture1.Picture=LoadPicture(filename)" e tutto
funzionava.
In VB .NET l'istruzione "Me.ActiveMDIChild.Picture1" ritorna errore poiché
"Me.ActiveMDIChild" ritorna una form generica, non del tipo MDIChild (quindi
mi dice che PictureBox1 non esiste). NB: 'MDIChild' è il nome della form MDI
child
Come si può risolvere? Ho cercato un sacco su Internet ed ho risolto
convertendo la ActiveForm nel tipo MDIChild e, in questo modo, mi vede la
Picturebox:
Dim myMDIChild as MDIChild
myMDIChild = CType(Me.ActiveMDIChild, MDIChild)
myMDIChild.PictureBox1.etc.
Così funziona. Ma ho scelto il modo migliore oppure ne esistono altri? La
domanda generica è: come si fa a modificare da una form MDI parent le
proprietà di un controllo (non quello attivo) su una form MDI child?
Grazie!

Devi castare il generico Form al tuo tipo specifico (che corrisponde col
nome della classe indi il nome del form) ad esempio se il form child si
chiama Form2 devi usare
DirectCast(Me.ActiveMdiChild,Form2).PictureBox1.Image=...
HTH
-- 
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - 
http://www.ugidotnet.org
Weblog: 
http://www.ugidotnet.org/710.blog

> Devi castare il generico Form al tuo tipo specifico
Corrado, Corrado... Quante volte ti devo ripetere che si dice "ingessare"?
:-D
-- 
.A
UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org
Read my blog at: 
http://www.ugidotnet.org/4.blog

 Corrado, Corrado... Quante volte ti devo ripetere che si dice "ingessare"?
Non era "castRare"? ;)
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 DirectCast(Me.ActiveMdiChild,Form2).PictureBox1.Image=...
Io uso CType invece di DirectCast e funziona comunque. E' meglio o peggio?
Grazie!
Luc

 ha scritto nel messaggio
news:Tvyic.139171$rM4.5...@news4.tin.it...

Meglio DirectCast,
in quanto, l'espressione è dello stesso tipo del secondo parametro.
Ave
giuseppeD

 in quanto, l'espressione è dello stesso tipo del secondo parametro.
CType e' (anche) un operatore di conversione mentre DirectCast e' solo un
operatore di casting, CType funziona anche con i value types mentre
DirectCast solo per i reference types.
A titolo informativo nella prossima release avremo anche TryCast che
ritornera' nothing nel caso il casting fallisca (per la cronaca e'
l'equivalente di 'as' di C#)


 "ingessare"? :-D
Andrea, mea culpa, l'ingessatura mi e' sfuggita, adesso mi metto in
ginocchio sui ceci e mi guardo una puntata di Marzullo... :P


 ginocchio sui ceci e mi guardo una puntata di Marzullo... :P
Hai sbagliato un'espressione, mica hai ucciso qualcuno, su...
non è *COSI'* grave.
Bye, G.


Lo so ma Andrea e' un tipo molto "precisino"... :)


 Lo so ma Andrea e' un tipo molto "precisino"... :)
Eh, be', dai... va bene i ceci, forse qualche "staffilata" sulle mani,
potrei capire anche qualche frustata col gatto a nove code e dopo
il sale sulle ferite, ma *Marzullo NO* !
Quello è riservato alle colpe davvero gravi, e poi credo sia vietato
anche dalla convenzione di Ginevra...
Bye, G.