33 messaggi dal 31 marzo 2004
Ciao a tutti!
in un progetto con due form (form1 e form2) se lo eseguo come progetto
indipendente, dalla form2 riesco ad agire sugli oggetti della form1. Se
invece inglobo il progetto in una soluzione più ampia dalla form2 continuo a
"vedere" gli oggetti di form1 mentre scrivo il codice, ma in esecuzione form1
non risponde. Non da errori ma su form1 non succede niente (ad esempio non
riesco nemmeno a rendere invisibile un controllo)
Su un post di un altro forum ho trovato l'indicazione di fare così:

in Form2:
Public Form1chiamata As Form1
se voglio modificare un controllo:
Form1chiamata.NomeControllo.visible = false

nella routine di Form1 che chiama:
Dim frm As New Form2
Form2.Form1chiamata = Me
frm.ShowDialog()

Ma ancora non funziona: adesso quando arrivo a
Form1chiamata.NomeControllo.visible = false
le form Form1 e Form2 vengono portate in secondo piano, dietro la form
principale FormMain e il controllo resta perfettamente visibile.
Che diavolo sta succedendo?
Pileggi
Cosa intendi per "se invece lo inglobo in una soluzione più ampia". Entrambe le form stanno nello stesso progetto?
Prima di tutto pensa a quello che stai facendo, non copiare semplicemente gli script
Hai due form. Su Form2 dichiari un campo pubblico Form1chiamata.
Da Form1 crei la form2, imposti il campo e la mostri. Innanzitutto occorre che il codice che accede a Form1chiamata non venga chiamato nel costruttore dei Form2 perché è ancora nothing.
Se debuggi nel momento in cui devi accedere al controllo, vedi valorizzato form1?
La form1 con cosa l'hai mostrata? Show o ShowDialog? La FormMain mostra la form1 e la form1 mostra la form2?
Siccome è una finestra modale, non è meglio che la form1 aspetti semplicemente che la form2 termini di essere visualizzata per poi farla agire di conseguenza? Oppure in alternativa io ti consiglieri di non legare la form1 alla form2, come tecnica è molto brutta. Meglio un sistema di eventi per notificare.

Ciao

Il mio blog
Homepage
33 messaggi dal 31 marzo 2004
Ciao, ti ringrazio, hai centrato il problema. Nel frattempo un amico mi ha aiutato e ho risolto il tutto, il non-funzionamento dipendeva dall'errore:

dim f as new from2
f.formChiamante = Me 'errore di prima: form2.formChiamante = Me
f.ShoDialog()

ma il codice che ho scritto è bruttissimo e va riscritto usando gli eventi (mi ha spiegato come fare)
Ciao, grazie ancora,
Pileggi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.