• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Chiudere sottoform
#1
e rieccomi ad assilarvi (ahahah) vorrei chiudere il sottoform per non sovrapporre due sottoform uguali ho gia provato con due stringhe

sottoform2.hide() mi da errore..
form2.hide() non funziona

allora aiutino *-*
 
Rispondi
#2
quando apri un sottoform che deve andare al posto di un altro metti nel Button:
nomeForm.Close()

in caso il button è dentro al form che si deve chiudere:
me.Close()

o volendo puoi mettere nomeForm.Close() sotto Private Sub nomeFormDaTenereAperto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
Rispondi
#3
C'è una soluzione più che semplice.

Metti la dichiarazione della variabile per la sottoform, sotto a: Public Class Form1.

Ora nel button che servirà per chiudere la sottoform, devi usare questo codice: NomeDellaVariabile.Hide().

Faccio un esempio:

Mettiamo che la variabile sia cosi: Dim nome As New Form2, nel button che servirà per chiudere la sottoform devi inserie questo codice: nome.Hide()
 
Rispondi
#4
allora tutti questi vari codici fungono in un form a parte da quanto ne ho tratto ora risolvete l'enigma intricato che si cela dentro °-° so che parlo come in un investigativo punta e clicca ma sono fatto così comunque apparte l'ot eccovi la stringa con cui apro la sottoform dentro la form base
Dim sottoform1 As New Form2
sottoform1.MdiParent = Me
sottoform1.Show()

una volta che io clicco il bottone questa form incalza a pennello dentro il form base e qua nessun problema ma mettiamo che io voglia aprire la form3 tadan cosa succede si sovrappongono!

allora creo il bottone con scritto

Dim sottoform1 As New Form3
sottoform1.MdiParent = Me
sottoform1.Show()

visualizza il form3 però sovrapposto allora ci aggiungo

Dim sottoform1 As New Form3
sottoform1.MdiParent = Me
sottoform1.Show()
form2.hide() 'tentativo fallito'
sottoform2.hide() 'stringa errata'
form2.close() ' tentativo fallito'
me.close() 'si è chiuso tutto'

altre idee?
 
Rispondi
#5
Ho aggiustato il mio post precedente...
 
Rispondi
#6
ho scritto dim form2.hide as new form2 ma non funziona (sicuramente ho sbagliato °-°)
 
Rispondi
#7
Oddeo, stavolta io mi sono spiegato più che bene, è una cosa cosi elementare da fare che pensavo che subito l'avessi capita xD.

Rileggi bene quello che ho scritto, l'hide nella dichiarazione della variabile non c'entra nulla.
 
Rispondi
#8
scusa dark legge a tratti ora ho capito °-°
 
Rispondi
#9
Codice:
Public Class Form1
    Dim sottoform1 As New Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        sottoform1.MdiParent = Me
        sottoform1.Show()
        Button1.Hide()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        sottoform1.Close()
    End Sub
End Class

dichiara i sottoform come variabile globale (o meglio ancora utilizza i puntatori se ne sei capace).

usa un nome diverso per ogni sottoform
"sottoform1" associato a "form2"
"sottoform2" associato a "form3"
ecc...
 
Rispondi
#10
Mi linci se ti dico che non funziona ti riporto
Codice:
Public Class Form1
    Dim sottoform1 As New Form2
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sottoform1 As New Form2
        sottoform1.MdiParent = Me
        sottoform1.Show()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        sottoform1.Close()
    End Sub
End Class

edit by steve: per renderlo leggibile mettici
Codice:
[code]
codice
[/code]
oppure
Codice:
[php]
codice
[/php]
 
Rispondi
#11
No close !!!!!! devi usare Hide !!!!! XD te lo spiegato col cucchiaio <.< e poi togli la dichiarazione della variabile nel button che non serve.
 
Rispondi
#12
Codice:
Public Class Form1
    Dim sottoform1 As New Form2

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        REM Dim sottoform1 As New Form2 --- errore, l'hai già fatto in cima
        sottoform1.MdiParent = Me
        sottoform1.Show()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        sottoform1.Close()
    End Sub
End Class


close = chiudi
hide = nascondi

il codice è lo stesso, se lo ritieni opportuno sostituisci close con hide.
per occupare meno memoria consiglio close
per aumentare la preformance consiglio hide
 
Rispondi
#13
steve hai sbagliato anche te ! XD non deve essere cosi: sottoform1.Close() ma cosi: sottoform1.Hide(), prima lo spiegato in modo cosi corretto e pulito ò.ò

Il close da errori dopo quando vai ad riaprire la form.
 
Rispondi
#14
aveva ragione steve ora ho risolto grazie mille °-°
 
Rispondi
#15
(07-09-2010, 11:33 PM)Kira Ha scritto: steve hai sbagliato anche te ! XD non deve essere cosi: sottoform1.Close() ma cosi: sottoform1.Hide(), prima lo spiegato in modo cosi corretto e pulito ò.ò

Il close da errori dopo quando vai ad riaprire la form.

se chiami sottoform1.Close() per riaprirlo devi chiamare sottoform1.Dispose()
se chiami sottoform1.Hide() per riaprirlo devi chiamare sottoform1.Show()

la differenza principale l'ho scritta sopra:
hide nasconde (il form è ancora aperto e pesa sulla ram)
close chiude (il form non è più aperto, per aprirlo deve ricaricare tutto)

comunque come ho già detto, in caso non gli va bene basta cambiare Close() con Hide(). non bisogna sconvolgere il codice.
 
Rispondi
#16
steve:

show = mostra
close = chiudi

Non puoi mostrare una finestra chiusa Big Grin
 
Rispondi
#17
cito me una 15ina di centimetri sopra XD

steve Ha scritto:se chiami sottoform1.Close() per riaprirlo devi chiamare sottoform1.Dispose()
se chiami sottoform1.Hide() per riaprirlo devi chiamare sottoform1.Show()
 
Rispondi
#18
CON CLOSE
Apro il sottoform2 chiudo il sottoform2 con il bottone con close clicco sul bottone del sottoform2 e mi dice che il form2 è gia stato eliminato!

CON HIDE
Apro il sottoform2 chiudo il sottoform2 con il bottone con hide clicco sul bottone del sottoform2 e si sovrappone con quello vecchio..
 
Rispondi
#19
(07-09-2010, 11:50 PM)Dany Ha scritto: CON CLOSE
Apro il sottoform2 chiudo il sottoform2 con il bottone con close clicco sul bottone del sottoform2 e mi dice che il form2 è gia stato eliminato!

cito me una 15ina e anche una 30 di centimetri sopra XD XD XD

steve Ha scritto:se chiami sottoform1.Close() per riaprirlo devi chiamare sottoform1.Dispose()
se chiami sottoform1.Hide() per riaprirlo devi chiamare sottoform1.Show()

(07-09-2010, 11:50 PM)Dany Ha scritto: CON HIDE
Apro il sottoform2 chiudo il sottoform2 con il bottone con hide clicco sul bottone del sottoform2 e si sovrappone con quello vecchio..

bugia... -.-
ho provato e funziona anche con hide()

Codice:
Public Class Form1
    Dim sottoform1 As New Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        sottoform1.MdiParent = Me
        sottoform1.Show()
        Button1.Hide()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        sottoform1.Hide()
    End Sub
End Class
 
Rispondi
#20
con hide si sovrappone ora vi faccio dei video asd
 
Rispondi
#21
più che i video dammi un pezzo di codice...

con il codice che ti ho linkato sopra funziona (provato personalmente)
 
Rispondi
#22
steve con dispose a me non apre nulla. E poi cosa c'entra disporre con aprire o mostrare ?

Comunque con hide si sovrappongono, è vero, perché hide nasconde la sottoform a noi ma al programma no. Ora vedo un po'.
 
Rispondi
#23
eccone la prova u_u


Allegati
.zip   prova.zip (Dimensione: 380.85 KB / Download: 6)
 
Rispondi
#24
@Kira:
allora lo ridichiari e fai prima...
Codice:
dim abcd as new Form2
Form2.show       <----    serve solo se tieni nascosto

@Dany:

scritto e testato personalmente:
Codice:
Public Class Form1
    Dim sottoform1 As New Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        sottoform1.MdiParent = Me
        sottoform1.Show()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        sottoform1.Hide()
    End Sub
End Class

hai sicuramente fatto qualche errore di codice
 
Rispondi
#25
se leggi è uguale al mio caro u_u
 
Rispondi
#26
steve ha ragione Dany, le form si sovrappongono, io non ci avevo pensato, ma è una cosa palese, perché Hide nasconde, non chiude, è come se metti: nome.Visible = False, si sovrappongono lo stesso, il loro fantasma rimane xD.
 
Rispondi
#27
il file non mi funziona (l'hai chiamato prova.zip e mi scarica prova.exe), non è compatibile con i 64bit.

il codice che ti ho scritto ti assicuro che funziona
l'unico problemino, risolvibile, è che me lo avvia windowed (a finestra) e non maximized (a schermo intero, in modo che occupa tutta la form principale, come avevo impostato)
 
Rispondi
#28
Ho provati in altri modi, ma alla fine devi adottare questa soluzione che non mi piace molto... nel button che chiude la form metti: nome.Anchor = AnchorStyles.Left

Non lo postato subito perché come modo non mi piace :|

P.S: nome deve essere uguale al nome delle variabile per far chiudere la form capito no ? xD
 
Rispondi
#29
La tua soluzione è spettacolare ho finito problema risoltissimo Big Grin
 
Rispondi
#30
altrimenti, un pò più ortodossa, chiudi e riapri il form (testato e funziona)

Codice:
Public Class Form1
    Dim sottoform1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        sottoform1 = New Form2
        sottoform1.MdiParent = Me
        sottoform1.Show()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        sottoform1.Close()
    End Sub
End Class
 
Rispondi
  


Vai al forum:


Browsing: 2 Ospite(i)