Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Chiusura ed apertura seconda form
martedì 30 maggio 2006 - 10.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mar 30 mag 2006 - 10:56
ragazzi,
ho due form: FormA e FromB
avvio FormA (non deve essere una splashscreen)
eseguo codice
devo chiudere FormA ed aprire FormB la quale è il menu iniziale e dove poi avviene la connessione al db.
provo a fare così:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FromB As New Menu
FormB.show()
Me.Close()
End If
ma mi chiude l'intero programma.
Devo andare in vacanza
Su una stupitaggine del genere mi sono bloccato. Help me!!!
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
mar 30 mag 2006 - 11:39
Non potresti creare una classe a parte (magari anche su un progetto a parte) che ti gestisce il lancio delle 2 form? Ossia un main che ti apre il FormA e quando devi scatenare l'evento che apre B e chiude A setti una proprietà sul main che a quel punto può lanciare B lasciando morire A?
Il main sarebbe il tuo programma principale e A potrebbe chiudersi senza problemi no?
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mar 30 mag 2006 - 11:44
Vorrei farlo tutto sullp stesso progetto e non utilizzarne un altro
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
mar 30 mag 2006 - 11:56
Beh allora ti consiglio di creare un altra classe nel tuo progetto e farla in questo modo:
Public Class App
Public Shared ShowB As Boolean
<STAThread()> _
Public Shared Sub main(ByVal sArgs As String())
Dim frmA As New FormA
frmA.ShowDialog()
If ShowB Then
Dim frmB As New FormB
frmB.ShowDialog()
End If
End Sub
End Class
Poi imposta il progetto in modo tale che sia questa classe quella di partenza.
Chiaramente nella classe FormA avrai il metodo
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
App.ShowB = True
Me.Close()
End Sub
Potrebbe risolvere il tuo problema?
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mar 30 mag 2006 - 12:14
>Poi imposta il progetto in modo tale che sia questa classe quella
>di partenza.
non ho capito questo pezzo, come faccio ad impostarla come partenza. nella configurazione del progetto la formA è quella di partenza
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
mar 30 mag 2006 - 12:27
Quando sul progetto fai tasto destro e scegli proprietà metti come progetto di avvio questa nuova classe (App).
Non sarà più formA la classe di avvio, ma visto che il metodo main che ti ho scritto fa come prima operazione proprio il lancio della formA è come se stessi lanciando lanciando lei!
Capito?
Anziché dire al tuo progetto "lancia FormA, che chiusa lei chiudi tutto", dici "lancia App che a sua volta lancia FormA e quando FormA si chiude App è ancora attivo e può lanciare FormB".
Non sono bravissimo a spiegarmi...ma spero tu abbia capito.
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 30 mag 2006 - 13:37
Se imposti come oggetto di avvio del progetto la 'sub main' e lanci l'applicazione 'slegata' da una form, puoi chiudere la tua form principale senza che si chiuda anche l'applicazione.
Devi mettere istruzioni tipo queste, in un modulo:
Module Module1
Dim FStart As New Start
Public Sub Main()
Fstart.Show
Application.Run()
End Sub
End Module
Adesso per chiudere l'applicazione devi esplicitamente invocare il metodo:
Application.exit()
Ho scritto un po' a memoria...mi sembra che si scriva così....spero di non aver fatto troppi errori e/o omissioni
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mar 30 mag 2006 - 21:35
Sai come ho risolto?
Semplicemente vb net nelle proprietà del progetto ha l'opzione della seguente scelta:
Modalità arresto:
Alla chiusura del form avvio
Alla chiusura dell'ultimo form
Scegliendo la seconda opzione ed essndo il form menu principale l'ultimo che rimane aperto, visto che da lì girano tutte le funzioni del programma, ecco che posso evocare così la form:
ci troviamo nella formA:
Dim FormB An New Menu
FormB.Show()
Me.close()
Ciao e grazie per i consigli
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 30 mag 2006 - 21:51
Certo! Basta che ti ricordi di avere almeno una form aperta prima di chiudere l'altra!
Non mi era venuta in mente, ma anche questa è una soluzione!
Vedi quanto fa bene scambiarsi le idee!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !