Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB.NET]Chiusura form

    Non voglio che quando chiudo il form venga scaricato dalla memoria, a tale scopo metto nella Form_closing:
    e.cancel = true
    me.hide
    così riesco ad ottenere quello che mi serve. L'unica nota negativa è che se premo sulla X della finestra principale, per chiudere l'intero programma, mi viene nascosta(con Hide) la form ed il programma si chiude solo se premo nuovamente sulla X. Quindi, quando la form è visibile il programma non si chiude, se la form è già nascosta allora il programma si chiude regolarmente.
    Per risolvere questo problema dovrei togliere e.cancel = true, ma ovviamente non otterrei quello che voglio.
    Qualche suggerimento su come risolvere?
    Ciao e grazie.

  2. #2
    Puoi spiegarmi meglio?
    Tu vuoi che se chiudi la form dal tasto x venga solamente nascosta o vuoi che se la chiudi dal tasto x venga chiuso il programma?

  3. #3
    E' un progetto MDI. Quando chiudo un form figlio non voglio che questo si "scarichi" dalla memoria ma voglio semplicemente che si nasconda, a tale scopo metto nella Form_closing:
    e.cancel = true
    me.hide
    Bene, mettiamo caso che voglio uscire dal programma, se chiudo prima il form figlio(magari premendo la sua X)e poi chiudo il form padre, il programma esce correttamente. Si chiude.
    Se invece ho il form figlio visualizzato e faccio click sulla X del form Padre mi viene chiuso(nascosto) il solo form figlio ma non il programma, dovrei cliccare nuovamente sulla X del form padre per chiudere il programma.
    Spero di essere stato chiaro.
    Ciao e grazie

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Ho creato un progetto con un contenitore MDI e un form figlio, ma tutto funziona regolarmente: quando chiudo il contenitore, il figlio si chiude e l'applicazione termina.

    Dovresti dare una sbirciata al tuo codice per vedere se c'è qualcosa che impedisce il buon fine di questa operazione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Il problema è sorto da quando non scarico il form dalla memoria con me.close, ma lo nascondo con me.hide
    Infatti quando cerco di chiudere il form padre ed il form figlio è Nascosto, viene richiamata la FormFiglio_closing ed l'esecuzione si ferma proprio sul formfiglio.hide(che si trova nella formfiglio_closing)
    Il problema è strano, pertanto mi risulta difficile essere del tutto chiaro nell'esposizione.
    Ciao

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da mardok30
    Il problema è sorto da quando non scarico il form dalla memoria con me.close, ma lo nascondo con me.hide
    Infatti quando cerco di chiudere il form padre ed il form figlio è Nascosto, viene richiamata la FormFiglio_closing ed l'esecuzione si ferma proprio sul formfiglio.hide(che si trova nella formfiglio_closing)
    Il problema è strano, pertanto mi risulta difficile essere del tutto chiaro nell'esposizione.
    Non so quale effetto possa avere il metodo Hide se richiamato all'interno dell'evento Closing del form figlio.

    Per quanto ne so al momento, il metodo più pulito è quello di richiamare dal form principale che funge da contenitore il metodo Close di ciascuna form figlia nel momento in cui l'evento Closing del genitore viene generato.

    In questo modo, l'applicazione può essere chiusa correttamente.

    Se intendi impedire la chiusura manuale dei form figli, aggiungi eventualmente una proprietà booleana a quei form in modo da poterla impostare per segnalare se il form sta per essere chiuso dal form principale oppure manualmente.

    Non mi viene in mente altro per adesso...dovrei sperimentare o documentarmi un po' per darti ulteriori delucidazioni.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Che dire... ho messo nella Closing del form principale Application.Exit()
    e vengono chiusi correttamente tutte le form figlie aperte ed il programma si chiude correttamente.
    Per quanto ne so al momento, il metodo più pulito è quello di richiamare dal form principale che funge da contenitore il metodo Close di ciascuna form figlia nel momento in cui l'evento Closing del genitore viene generato.
    Da quel che ne so io vengono richiamate automaticamente le FormFiglie_Closing delle form figlie aperte quando si esce dal programma.
    Grazie a tutti, in special modo ad Alka per la sua disponibilità

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.