Newsgroup: it.comp.lang.visual-basic
Titolo: [?][.NET] Chiusura form

Salve a tutti
Nella mia applicazione ho 2 form, form1 e form2.
Dalla form1, devo richiamare la form2 e contestualmente chiudere form1 e per
farlo uso la seguente procedura:
Premetto che la procedura di avvio del progetto è posizionata in una Sub
Main in un modulo
Sub apriform()
    dim frm as new form1
    form1.close
    frm.showdialog()
End Sub
quando cliccko sul bottone che avvia la procedura apriform() si chiude form1
ma non si apre form2. Dove sbaglio?
Ciao
Fabio

 ha scritto nel messaggio
news:amrnb.7748$gA....@tornado.fastwebnet.it...

La form1 è la maschera di stratup, di avvio applicazione.
Quindi, anche se hai altre 10 form aperte, ma chiudi la maschera che ha
attivato l'applicazione,
chiudi l'applicazione.
Ave
giuseppeD

End Sub
-- 
ciao, hal

 chiudi l'applicazione.
E' vero, però, come ho premesso nel mio post, ho creato una sub main in un
modulo che rappresenta la procedura di avvio come di seguito:
Sub Main()
    dim frm as new form1
    application.run(frm)
End Sub
 in modo tale che chiudendo il form iniziale non si chiuda l'applicazione.
Ciao
Fabio


CIao
Fabio

End Sub
Se vuoi aprire la form2, dovrebbe diventare:
dim frm as new form2
poi utilizzi >    form1.close
quindi chiudi la form che ha avviato l'applicazione,
quindi chiudi l'applicazione.
Prova a seguire le istruzioni step dopo step,
e dopo il form1.close
vedi dove l'istruzione ti conduce.
3-
Un'altra riga di codice non mi convince,
 form1.close
VB.NET
 non ti segnala anomalia ?
Ave
giuseppeD

 
VB.NET
 non ti segnala anomalia ?
No, nessun segnale di errore.
La cosa strana che avviene è che, eseguendo l'istruzione apriform, si avvia
form2 e si scarica subito insieme a form1.
Ciao
Fabio

 In ogni caso, come posso aprire form2 e scaricare form1?
Apri form3 come startup
da qui apri form1
o
form1.visible=false
Ave
giuseppeD

 In ogni caso, come posso aprire form2 e scaricare form1?
Io nel libro di Balena (quello su 
VB.NET
 chiaramente!) ho letto proprio il
contrario!
Allora...
Hai a disposizione 2 sistemi:
a) Crei un'altri thread principale per la seconda form (e poi termini il
primo)
b) Fai partire il programma da una form nascosta ( :-(  )
    Ciao
        Allanon
-- 
- SPAMKILLER
 lasciate il NOSPAM nell'indirizzo: 
itlangv...@michele.sytes.net
 e lasciate la parola SPAMKILLER nel corpo dell'email

 No, nessun segnale di errore.
Poiche' Form1 e' la classe, e poiche' le due istanze in Main e ApriForm sono
locali e comunque non si chiamano 'Form1', sorge l'atroce dilemma:
<sottofondo musicale dei Goblin>
Non avrai mica usato il wizard di conversione automatica da VB6?!?
Ad ogni modo, come ti hanno gia' detto, se l'istanza di Form1 e' stata usata
come form di avvio non puoi chiuderla (parliamo di chiudere *quella stessa
istanza*), pena la chiusura del programma
Quello che vuoi ottenere probabilmente e' questo
Sub apriform()
    Dim frm As New Form2
    Me.Visible = False
    frm.ShowDialog()
    Me.Visible = True
End Sub
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown


E' un'idea, ti ringrazio
Ciao
Fabio

 form1.visible=false
In questo modo non scarico form1, mi rimane in memoria.
Ciao
Fabio


Anche a te + grazie
Fabio

 a) Crei un'altri thread principale per la seconda form
Potresti fare così:
Aggiungere un modulo tipo quello che segue:
Quando devi caricare un'altra form Basta che fai:
StartForm(New Form2)
Attenzione che però così crei un nuovo Thread: indicativamente usa questo
sistema solo se vuoi termina la precedente form principale, altrimenti
leggiti il capitolo 13 del "Balenottero" che parla di Threading...
Aggiungi in un file questo modulo:
Module FormStarter
  Friend Sub StartForm(ByVal frm As Form)
    If Not frm Is Nothing Then
      FormToStart = frm
      Dim T As New System.Threading.Thread(New
System.Threading.ThreadStart(AddressOf InternalStartForm))
      T.Start()
    End If
  End Sub
  Private FormToStart As Form
  Private Sub InternalStartForm()
    FormToStart.ShowDialog()
    FormToStart = Nothing
  End Sub
End Module


 userà...
Questo oltre che essere una bella cosa è molto utile, perchè crea nuove idee
e per uno come me insegna.

Ciao
Fabio
