Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [VB.NET]visualizzare form hide

    Nascondo un form con Frm.Hide, come faccio a visualizzarlo nuovamente senza ricaricarlo da zero ovviamente?
    Ciao

  2. #2

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    nomeform.show

  4. #4
    grazie,provo ad esporre meglio il problema.
    Ho un bottone nel form principale nel quale c'è:
    codice:
    Dim OpzioniTesto As New FrmText
    OpzioniTesto.ShowDialog()
    così la prima volta che premo mi si apre il form. Quando clicco sul "Chiudi" del form faccio OpzioniTesto.hide
    Se clicco un'altra volta sul bottone del form principale è ovvio che mi ricarica un nuovo form, perché c'è:
    codice:
    Dim OpzioniTesto As New FrmText
    OpzioniTesto.ShowDialog()
    Come faccio a dirgli che la seconda volta che faccio click non mi deve aprire un nuovo form ma deve visualizzare quello nascosto?
    Spero di essermi spiegato.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,464
    Originariamente inviato da mardok30
    Come faccio a dirgli che la seconda volta che faccio click non mi deve aprire un nuovo form ma deve visualizzare quello nascosto?
    Invece di utilizzare una variabile locale che contenga ogni volta il riferimento ad una nuova istanza appena creata del form secondario, rendi la variabile un campo della classe del form principale e nella routine in cui il form secondario deve essere visualizzato scrivi qualcosa di simile al seguente codice:
    codice:
    If OpzioniTesto = Nothing Then
      OpzioniTesto = New FrmText
    End If
    OpzioniTesto.ShowDialog()
    In questo modo, quando la variabile viene inizializzata la prima volta con un riferimento al form secondario, tale riferimento permane e non viene creata una nuova istanza poichè le istruzioni dell'If...Then non vengono eseguite.

    Prendi il codice come puro esempio poichè non programmo abitualmente con VB.NET ma uso Delphi.NET pertanto non sono certo che sia corretto dal punto di vista sintattico, ma dovrebbe essere sufficiente a rendere l'idea.

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

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

  6. #6
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    confermo è cosi

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,464
    Originariamente inviato da cassano
    confermo è cosi
    E' solo una delle tante soluzioni. Ad esempio, se non ricordo male il metodo ShowDialog visualizza un form "modale", che non consente di proseguire fino a quando tale form non viene chiuso.

    In questo caso, forse conviene davvero usare un costrutto Try...Finally e garantire la distruzione della finestra di dialogo ricreandola ogni volta ed evitando di occupare inutilmente memoria.

    Qualcosa di simile a quanto segue:
    codice:
    Dim MyForm As New MyFormClass
    Try
      MyForm.ShowDialog()
    Finally
      MyForm.Dispose()
    End
    Anche questo codice va "preso con le molle" dato che non l'ho verificato.

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

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

  8. #8
    Grazie.
    Ad esempio, se non ricordo male il metodo ShowDialog visualizza un form "modale", che non consente di proseguire fino a quando tale form non viene chiuso.
    Si ricordi bene.

    rendi la variabile un campo della classe del form principale
    Devo essere sincero non è che ho capito proprio bene cosa significa, pardon :-)
    Ho risolto però in altro modo:
    Dim OpzioniTesto As New FrmText l'ho messo tra le dichiarazioni a livello di form
    poi nel bottone ho messo
    OpzioniTesto.ShowDialog()
    Non so se è la soluzione migliore ma al momento sono riuscito a fare solo questo.
    e grazie ancora

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,464
    Originariamente inviato da mardok30
    Ho risolto però in altro modo [...]
    Uhm... beh sì, in effetti era più semplice ancora.

    In sostanza, quando crei un'istanza del form principale, viene creata un'istanza del form secondario e il suo riferimento viene assegnato alla variabile privata che è campo del form principale; in seguito, ti basta chiamare il metodo del form secondario ShowDialog per mostrarlo.

    Direi che con la tua e le nostre soluzioni abbiano snocciolato l'argomento, no?

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

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

  10. #10
    Direi che con la tua e le nostre soluzioni abbiano snocciolato l'argomento, no?
    direi proprio di si
    Non credo venga fatto in automatico quindi per sicurezza ho messo anche un:
    OpzioniTesto.Dispose()
    quando chiudo il form principale.

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.