View Full Version : Chisura di un form vb.net
mangzeus
08-05-2004, 13:23
All'interno di un'applicazione parto con un form di presentazione....in questo form c'è una label di introduzione e un pulsante...io quando clicco sul pulsante voglio che mi appaia il form principale del programma e voglio di conseguenza chiudere il form di presentazione...Ho utilizzato il metodo close ma non mi si toglie il form...come devo fare???io ho fatto così.
Private Sub btEntra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntra.Click
Dim frmPre As New FrmPresentazione()
Dim frmPri As New FrmPrincipale()
frmPri.Show()
frmPre.Close()
End Sub
ho provato a mettere frmPre = nothing ma niente
ho provato a chiudere il formPresentazione all'evento load del formPrincipale ma niente non sparisce...
questo funziona su vb6, dovrebbe essere lo stesso...
unload frmPre
disumano
09-05-2004, 12:37
oppure
me.hide
mangzeus
10-05-2004, 08:18
me.hide funziona ma mi nasconde il form e quando chiudo quello principale l'applicazione mi rimane aperta.
per chiudere l'applicazione devi chiudere tutto
fabio_tarantino
10-05-2004, 10:10
Non puoi mettere la dichiarazione della form principale dentro l'evento on click!
mangzeus
10-05-2004, 10:34
Originariamente inviato da fabio_tarantino
Non puoi mettere la dichiarazione della form principale dentro l'evento on click!
se lo dichiaro all'inizio poi mi si chiude con il metodo close???
o devo utilizzare un'altro metodo??
fabio_tarantino
10-05-2004, 10:42
frmPre è una variabile globale
Dim frmPri As New FrmPrincipale()
Private Sub btEntra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntra.Click
frmPri.Show()
frmPre.Close()
End Sub
mangzeus
10-05-2004, 11:31
Originariamente inviato da fabio_tarantino
frmPre è una variabile globale
Dim frmPri As New FrmPrincipale()
Private Sub btEntra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntra.Click
frmPri.Show()
frmPre.Close()
End Sub
mi rimane ancora attivo se fccio così...
mangzeus
10-05-2004, 17:19
Ho un altro problema…in un applicazione ho 4 datagrid i quali all’interno delle proprietà ho cambiato la formattazione automatica…ma me lo cambia solo i uno dei quattro datagrid…gli altri 3 rimangono della stessa formattazione o cambiano formattazione ma i colori rimangono uguali…da cosa può dipendere??non riesco a cambiare la formattazione…neanche con questo:
Public Sub DimensionaCampo(ByVal dg As DataGrid, ByVal tbmapping As Integer, ByVal tb As String, ByVal campo As Integer, ByVal larghezza As Integer)
Dim tbs As New DataGridTableStyle()
tbs.MappingName = CStr(tbmapping)
dg.TableStyles.Add(tbs)
dg.TableStyles(tb).GridColumnStyles(campo).Width = larghezza
dg.tableStyle.backcolor ecc
‘neanche da qui riesco a modificare il colore...
End Sub
fabio_tarantino
10-05-2004, 18:52
ByRef dg As DataGrid
mangzeus
10-05-2004, 20:47
Originariamente inviato da fabio_tarantino
ByRef dg As DataGrid
grazie quindi basta che lo dichiaro così....
per quanto riguarda la chiusura del form funziona ma non riesco a nasconderlo e il form di presentazione mi rimane dietro a quello principale....
allora ho fatto così...
Private Sub btEntra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntra.Click
'se premo il pulsante prima che finiscano i 10 secondi il form si apre e il timer si stoppa.
myTimer.Stop()
Dim frLibri As New FrmLibri()
frLibri.ShowDialog()
Me.Hide() 'non serve a niente perchè in realtà non si nasconde il form
Me.Close()
End Sub
se invece al posto di Me.ShowDialog() uso ME.SHOW mi esce subito dall'applicazione...
come faccio a nascondere sotto il formpresentazione...non funziona neanche con visible.
mangzeus
10-05-2004, 21:17
Originariamente inviato da fabio_tarantino
ByRef dg As DataGrid
OK PERFETTO PER IL DATAGRID CI SONO...
mangzeus
10-05-2004, 21:34
poi se non sono troppo invadente con calma perchè penso che ne saprai più di me avrei una cosa nell'applicazione che in un metodo non mi funziona ma in un altro si...e se mi potevi dare l'email così ti postavo tutto io su un file txt con il codice anche...mi faresti un favore a darci un occhio??
fabio_tarantino
10-05-2004, 23:33
Allora:
1) gli OGGETTI passati ad una funzione o ad una procedura devo essere sempre passati per riferimento (ByRef) e non per valore.
2) In genere (a parte casi particolari) non si mette mai la dichiarazione di una form del progetto dentro una sub... Quando la sub termina vengono deallocate tutte le variabili dichiarate al suo interno compresa la form.
3) showdialog visualizza una finestra di dialogo in modalità "modale" ovvero l'interazione tra utente e programma viene ristretta alla finestra di dialogo fino alla sua chiusura; poi riprende la normale esecuzione del programma.
Non ho ben capito cosa vuoi fare cmq:
Nella form principale, nell'evento on_load (o qualcosa del genere) fai comparire una finestra di dialogo con showdialog dove hai la tua scritta e il tuo bel bottone.
Basta non devi fare altro!
Insomma ti consiglio di leggerti attentamente un libro sulla programmazione Object Oriented
mangzeus
11-05-2004, 08:11
Originariamente inviato da fabio_tarantino
Allora:
1) gli OGGETTI passati ad una funzione o ad una procedura devo essere sempre passati per riferimento (ByRef) e non per valore.
2) In genere (a parte casi particolari) non si mette mai la dichiarazione di una form del progetto dentro una sub... Quando la sub termina vengono deallocate tutte le variabili dichiarate al suo interno compresa la form.
3) showdialog visualizza una finestra di dialogo in modalità "modale" ovvero l'interazione tra utente e programma viene ristretta alla finestra di dialogo fino alla sua chiusura; poi riprende la normale esecuzione del programma.
Non ho ben capito cosa vuoi fare cmq:
Nella form principale, nell'evento on_load (o qualcosa del genere) fai comparire una finestra di dialogo con showdialog dove hai la tua scritta e il tuo bel bottone.
Basta non devi fare altro!
Insomma ti consiglio di leggerti attentamente un libro sulla programmazione Object Oriented
il mio problema è solo quello di far scomparire il form presentazione...riesco a chiuderlo...il mio unico problema è quello di non avere il formpresentazione visibile al di sotto di quello principale...
cosi ho fatto e mi riesce di chiuderlo ma io voglio anche nasconderlo e non ci riesco...
Private Shared myTimer As New System.Windows.Forms.Timer()
Public Shared frmpre As New FrmPresentazione()
Private Sub FrmPresentazione_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'mostro il form di presentazione
Me.Show()
'imposto l'evento tick (quando sono passati i secondi con cui viene impostato il timer) alla sub di apertura del formLibri
AddHandler myTimer.Tick, AddressOf apriform
myTimer.Interval = 10000
myTimer.Start()
End Sub
Private Sub btEntra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntra.Click
'se premo il pulsante prima che finiscano i 10 secondi il form si apre e il timer si stoppa.
myTimer.Stop()
Dim frLibri As New FrmLibri()
frLibri.ShowDialog()
Me.Hide()
Me.Close()
End Sub
Public Sub apriform(ByVal sender As Object, ByVal e As EventArgs)
'quando sono passati 10 secondi il timer si stoppa e visualizza il formLibri
myTimer.Stop()
Dim frLibri As New FrmLibri()
frLibri.ShowDialog()
Me.Close()
End Sub
io voglio nasconderlo il form presentazione oltre a chiuderlo...da qusto codice cosa devo modificare???
fabio_tarantino
11-05-2004, 10:07
Originariamente inviato da mangzeus
cosi ho fatto e mi riesce di chiuderlo ma io voglio anche nasconderlo e non ci riesco...
Scusa ma se chiudi una form, questa non può essere ancora visibile!!!
Fai così:
Metti nella form principale questa sub
Private Sub AvvioPresentazione(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim frPre as New FrmPrincipale()
Me.hide
Me.hide
End Sub
fabio_tarantino
11-05-2004, 10:12
Originariamente inviato da mangzeus
cosi ho fatto e mi riesce di chiuderlo ma io voglio anche nasconderlo e non ci riesco...
Scusa ma se chiudi una form, questa non può essere ancora visibile!!!
Togli quei timer!
Fai così:
Metti nella form principale questa sub
Private Sub AvvioPresentazione(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim frPre as New FrmPrincipale()
Me.hide() //nasconde la form principale
frPre.ShowDialog() //visualizza la form di presentazione (interrompe l'esecuzione di quella principale fino alla sua chiusura)
Me.Show() //visualizza la form principale
End Sub
mangzeus
11-05-2004, 10:43
Originariamente inviato da fabio_tarantino
Scusa ma se chiudi una form, questa non può essere ancora visibile!!!
Togli quei timer!
Fai così:
Metti nella form principale questa sub
Private Sub AvvioPresentazione(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim frPre as New FrmPrincipale()
Me.hide() //nasconde la form principale
frPre.ShowDialog() //visualizza la form di presentazione (interrompe l'esecuzione di quella principale fino alla sua chiusura)
Me.Show() //visualizza la form principale
End Sub
il contrario se mai io parto con il form presentazione e quando faccio click voglio che mi appaia il form principale e mi si chiuda e mi si nasconda il form presentazione...
fabio_tarantino
11-05-2004, 10:50
Originariamente inviato da mangzeus
il contrario se mai io parto con il form presentazione e quando faccio click voglio che mi appaia il form principale e mi si chiuda e mi si nasconda il form presentazione...
Guarda che quello che ti ho scritto fa la stessa cosa a LIVELLO UTENTE.
La soluzione che vuoi utilizzare tu non va bene per un semplice motivo: dichiarare il form principale nel form di presentazione non ha senso se il form di presentazione viene chiuso subito! La gerarchia deve essere:
Form Principale -> Form Presentazione
e non
Form Presentazione -> Form Principale
Il trucco sta nel caricare il form principale non visibile, e renderlo visibile subito dopo la chiusura del form di presentazione.
Altrimenti ti sei spiegato male. O hai cambiato idea!
Cosa vuoi fare? Una "splash screen" che viene visualizzata durante il caricamento del programma o una finestra di benvenuto?
mangzeus
11-05-2004, 11:03
io parto con un form di presentazione che deve essere visto per essere letto...poi c'è un pulsante su questo form...al click del pulsante io voglio chiudere e nascondere il form di pesentazione e attivare il formprincipale... come nel codice che ho postato...
fabio_tarantino
11-05-2004, 11:21
Allora il metodo che ti ho scritto è quello corretto
mangzeus
11-05-2004, 11:24
io ho fatto cosi come mi hai detto...io:
1. visualizzo il form di presentazione
2. faccio click sul pulsante e faccio comparire il form principale
3 ho messo la sub che mi hai postato nel form principale
mi da un erore di handle di finestra...
ho fatto così...
questo è il form presentazione
Public flibri As New FrmLibri()
Private Sub FrmPresentazione_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
end sub
Private Sub btEntra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntra.Click
flibri.ShowDialog()
end sub
Questo è il form principale
Private Sub FrmLibri_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
end sub
Private Sub AvvioPresentazione(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim frPre As New FrmLibri()
Me.Hide() 'nasconde la form principale
frPre.ShowDialog() 'visualizza la form di presentazione (interrompe l'esecuzione di quella principale fino alla sua chiusura)
Me.Show() 'visualizza la form principale
End Sub
mi da un errore...ma è giusto così??
fabio_tarantino
11-05-2004, 11:48
Sbagliato!!!!
A parte che continui a visualizzare la form principale in quella di presentazione...
Seconda cosa, nella form principale, o utilizzi il metodo load o utilizzi una sub tua che intercetta l'evento load (ma non entrambe le cose)
//*************
FORM PRINCIPALE
//*************
//utilizzando il metodo Load
Private Sub FrmLibri_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim frPre As New FrmPresentazione()
Me.Hide() 'nasconde la form principale
frPre.ShowDialog() 'visualizza la form di presentazione (interrompe l'esecuzione di quella principale fino alla sua chiusura)
Me.Show() 'visualizza la form principale
end sub
//*****************
FORM PRESENTAZIONE
//*****************
Public flibri As New FrmLibri()
Private Sub FrmPresentazione_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
end sub
Private Sub btEntra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntra.Click
me.Close()
end sub
mangzeus
11-05-2004, 13:30
adesso provo...
mangzeus
11-05-2004, 14:04
perfetto funziona...grazie mille.... adesso provo anche a impostare il timer...
per quella cosina che ti ho chiesto dimmelo se hai tempo per dargli un occhiata che ti mando un txt per mail poi non ti rompo più ti giuro...
fabio_tarantino
11-05-2004, 14:18
Posta direttamente qua il txt (ovviamente solo il codice di interesse).
Ciao
mangzeus
11-05-2004, 14:33
come faccio a postare il txt???non l'ho mai fatto
fabio_tarantino
11-05-2004, 14:47
intendevo un copia & incolla
mangzeus
11-05-2004, 14:58
provo ad allegarlo...dentro il file zip c'è un txt..
mangzeus
12-05-2004, 14:41
Mettendo prima un'altra sub identica
Public Sub NascondiCampo(ByRef dg As DataGrid, ByVal tbmapping As String, ByVal tb As String, ByVal campo As String, ByVal larghezza As Integer)
Dim tableStyle As New DataGridTableStyle()
tableStyle.MappingName = tbmapping
dg.TableStyles.Add(tableStyle)
dg.TableStyles(tb).GridColumnStyles(campo).Width = larghezza
End Sub
prima di chiamare dimensiona campo funziona...però poi se lo associo ad un evento click ogni volta che schiaccio il pulsante mi dice che il nome di mapping non può essere uguale...funziona solo per il primo click poi va in errore...perche fa così???
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.