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

    [Vb.Net] Secondo widnows form

    E' la prima volta che devo usare un secondo form in .net

    e non ci sto capendo una cippa: lo creo nel progetto, me lo disegno e mi creo il mio bel codice, se lo imposto come form di avvio della soluzione funziona bene...

    Come si fa a nasconde il primo form, fargli richiamare il secondo e aspettare che questo venga chiuso prima di proseguire?


    AIUTATE I PRINPIANTI!!! Vi supplico!!

    Grazie!

    FF

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    ShowDialog()

    Non credo sia un effetto intuitivo per l'utente vedersi nascondere una finestra per visualizzarne un'altra...al massimo, suggerirei di aprire semplicemente la seconda finestra di dialogo "modale" impedendo, fino a quando questa non viene chiusa, l'accesso alla prima.

    Quest'operazione è possibile usando il metodo ShowDialog di cui la classe della propria form dispone in quanto eredita da System.Windows.Forms.Form.

    Per vedere le versioni e l'utilizzo del metodo, fai riferimento alla Guida in linea.

    Tanto per fornire un esempio, supponendo di avere una form principale dalla quale desideriamo visualizzare una form secondaria appartenente alla classe di nome DialogForm attraverso la pressione di un pulsante, potremo scrivere un codice simile al seguente:
    codice:
    Private Sub DialogButtonClick(sender As System.Object, e As System.EventArgs)
      Dim dialogForm As New DialogForm
      Me.Hide()
      dialogForm.ShowDialog()
      Me.Show()
    End Sub
    In questo codice, viene dichiarata una variabile di tipo DialogForm di cui viene creata un'istanza; attraverso l'identificatore Me che rappresenta l'istanza della form principale dalla quale viene premuto il pulsante, chiamiamo i metodi Hide e Show per nascondere e visualizzare la form principale, rispettivamente.
    Il metodo ShowDialog della form secondaria permette di visualizzare la form e attendere che questa venga chiusa prima di proseguire nell'esecuzione del codice.

    Infatti, la chiamata al metodo Show e quindi il ripristino della visibilità del form principale avverrà solo quando la form secondaria verrà chiusa.

    Ad ogni modo, ritengo essenziale fare riferimento alla Microsoft .NET SDK Documentation per vedere tutte le versioni di ShowDialog a disposizione e le potenzialità che offre tale metodo, che vanno al di là del semplice "apri una finestra" (c'è la possibilità di restituire un valore di ritorno in base al responso dell'utente e altro ancora...).

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

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

  3. #3
    Come immaginavo sei stato forte e il discorso funziona... ma ho sgrugnato con un altro problema... vediamo se mi potrai essere ancora d'aiuto...

    (anche se da come parli mi pare che queste per te siano abbastanza minchiatine... )

    Dal secondo form ora come faccio ad andare a usare i controlli del primo??

    + generico: come faccio da un form ad andare ad usare i controlli di un altro?

    Grazie,

    FF

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da FrozenFire83
    + generico: come faccio da un form ad andare ad usare i controlli di un altro?
    Quando crei e visualizzi un form, generalmente manipoli un oggetto attraverso il suo riferimento (reference) che è memorizzato all'interno di una variabile. Riprendendo l'esempio che ti ho fatto io:
    codice:
    Dim aForm As New DialogForm
    aForm.ShowDialog()
    La variabile aForm fa riferimento ad un oggetto di tipo DialogForm, la nostra secondaria. Attraverso tale riferimento, si chiamano i metodi (come ShowDialog) e si manipolano i campi della form; se la form DialogForm contiene una casella di testo TextBox chiamata textBox1, allora scrivendo
    codice:
    aForm.textBox1.Text = "Hello!"
    si definisce la proprietà Text del controllo textBox1 (di tipo TextBox) presente sulla form aForm di tipo DialogForm.

    Si tratta di concetti molto diffusi nei linguaggi e sistemi object oriented...la loro comprensione, secondo me, è fondamentale soprattutto lavorando con il .NET Framework che, utilizzando come si deve e a fondo, dà molte soddisfazioni (che lavorando col vecchio VB non era possibile ottenere).

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

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

  5. #5
    Dunque dunque... questa volta non ci sono...

    Dunqeu per quanto riguarda il richiamo di un form modale ci sono:

    Dal primo, ad esempio da un tasto eseguo:

    codice:
    Me.Hide()
    
    Dim formTrasfer As New frmTransfer()
    
    formTrasfer.ShowDialog()
    
    formTrasfer = Nothing
    
    Me.Show()
    dovrei essere bello che contento se non fosse che...

    Nel load del secondo form faccio quello che devo e in fondo ho:

    codice:
    If Not File.Exists(gkFileFermaUscita) Then
         Me.Close()
    Else
         butClose.Visible = True
    End If
    Dunque: se il file esiste mi visualizza il bottone che contiene solo un me.close() che se clicco chiude il form e proseguo il primo form con il codice che seguiva la chiamata al secondo form...

    Se il file non esiste però e viene eseguito subito il me.close() non da alcun risultato: non appare il bottone e il form rimane fermo fino a quando non lo si chiude ("X" in alto a dx o alt+f4...) e poi il primo form prosegue bene...



    In + se mi risolvi questa già ti posso preannunciare che dalla seconda form non riesco ad usare il metodo insert di una list box del primo form, sia che sia nascosto come mi servirebbe ma nemmeno visibile... ora però non ricordo bene se da errori o meno...

    Grazie anticipatamente per l'aiuto... se passi da milano una pizza te la devo!

    FF
    ... I think that maybe
    I mean over my head...
    '********************************
    Imparare dai propri errori è il primo passo verso l'auto-perfezionamento...
    (mia massima tirata in una serata di devasto intenso...)

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da FrozenFire83
    In + se mi risolvi questa [...]
    Non ho capito cosa devo risolvere...qual è il problema del tuo codice? Cos'è che il tuo codice non fa e che invece dovrebbe fare?

    Originariamente inviato da FrozenFire83
    già ti posso preannunciare che dalla seconda form non riesco ad usare il metodo insert di una list box del primo form, sia che sia nascosto come mi servirebbe ma nemmeno visibile... ora però non ricordo bene se da errori o meno...
    Se non hai ben chiara la situazione tu, se hai errori o meno, figurati se posso sapere io in anticipo, senza aver nemmeno visto il codice, dov'è il problema e come risolverlo.

    Descrivi meglio il problema andando per gradi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Originariamente inviato da FrozenFire83
    Dunque dunque... questa volta non ci sono...

    Dunqeu per quanto riguarda il richiamo di un form modale ci sono:

    Dal primo, ad esempio da un tasto eseguo:

    codice:
    Me.Hide()
    
    Dim formTrasfer As New frmTransfer()
    
    formTrasfer.ShowDialog()
    
    formTrasfer = Nothing
    
    Me.Show()
    dovrei essere bello che contento se non fosse che...

    Nel load del secondo form faccio quello che devo e in fondo ho:

    codice:
    If Not File.Exists(gkFileFermaUscita) Then
         Me.Close()
    Else
         butClose.Visible = True
    End If
    Dunque: se il file esiste mi visualizza il bottone che contiene solo un me.close() che se clicco chiude il form e proseguo il primo form con il codice che seguiva la chiamata al secondo form...

    Se il file non esiste però, e viene eseguito subito il me.close() non da alcun risultato: non appare il bottone e il form rimane fermo fino a quando non lo si chiude ("X" in alto a dx o alt+f4...) e poi il primo form prosegue bene...

    Come mai il me.close nella routine click del tasto funziona e quello in questo IF no?




    In + se mi risolvi questa già ti posso preannunciare che dalla seconda form non riesco ad usare il metodo insert di una list box del primo form, sia che sia nascosto come mi servirebbe ma nemmeno visibile... ora però non ricordo bene se da errori o meno...

    Grazie anticipatamente per l'aiuto... se passi da milano una pizza te la devo!

    FF
    In neretto il problema....

    Scusami ma credevo di essere stato chiaro nella spiegazione...

    Per quanto riguarda la seconda parte del problema la situazione non mi è chiara perchè per il momento è un problema secondario: te ne stavo solo accennando...

    Grazie,

    FF
    ... I think that maybe
    I mean over my head...
    '********************************
    Imparare dai propri errori è il primo passo verso l'auto-perfezionamento...
    (mia massima tirata in una serata di devasto intenso...)

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da FrozenFire83
    Scusami ma credevo di essere stato chiaro nella spiegazione...
    Non puoi essere stato chiaro, visto che hai aggiunto solo ora la domanda vera e propria. :rollo:

    Ad ogni modo, continuo a non capire il problema: se il file in questione non esiste, la finestra viene chiusa immediatamente e non si vede nulla proprio perchè richiami il metodo Close della form nell'evento OnLoad, quindi avviene esattamente ciò che chiedi.

    Tra l'altro, la tua domanda è "perchè da un lato funziona e dall'altro, no?". Non si può dire "non funziona", si deve specificare cosa si vuole ottenere e cosa avviene invece.

    Inoltre, non capisco a quale routine OnClick fai riferimento in cui dici di chiamare Close, sebbene in realtà chiami Hide e Show della form chiamante.

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

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

  9. #9
    Se il file non esiste però, e viene eseguito subito il me.close() non da alcun risultato: non appare il bottone e il form rimane fermo fino a quando non lo si chiude ("X" in alto a dx o alt+f4...) e poi il primo form prosegue bene...


    Scusami: se lancio un me.close su una form e dico che il form rimane fermo fino a quando non lo chiudo con la x o alt f4 mi sembrava chiaro che il problema fosse non si chiude...

    Quello che avviene è esattamente quello che ho scritto: nulla... andando in debug, viene eseguita la me.close, salta l'else e quando arrivo all'end sub rimane lì fermo ad aspettare....

    NON SI CHIUDE IL FORM BENCHE' LA ME.CLOSE() VENGA ESEGUITA....


    Ad ogni modo, continuo a non capire il problema: se il file in questione non esiste, la finestra viene chiusa immediatamente e non si vede nulla proprio perchè richiami il metodo Close della form nell'evento OnLoad, quindi avviene esattamente ciò che chiedi.
    Ecco dove non ci capiamo: quello che hai scritto tu effettivaemnte è quello che dovrebbe accadare e che vorrei accadesse....

    Se continuiamo a non capirci tra un po' getto la spugna e apro un nuovo post.... )

    La routine OnClick a cui mi riferisco è quella del tasto che viene reso visibile se il file esiste:

    Se il file esiste mi viene mostrato il bottone e cliccandolo mi si chiude il form...

    Se il file non esiste il form dovrebbe chiudersi all'istante, ma questo non avviene....

    Ora sono stato più chiaro?

    Grazie

    FF
    ... I think that maybe
    I mean over my head...
    '********************************
    Imparare dai propri errori è il primo passo verso l'auto-perfezionamento...
    (mia massima tirata in una serata di devasto intenso...)

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da FrozenFire83
    mi sembrava chiaro che il problema fosse non si chiude...
    Forse sembrava chiaro (solo) a te.

    Se tu mi dici che il form non si chiude fino a quando non si premere ALT+F4 o il pulsante sulla barra del titolo, come faccio a sapere io se a te va bene così oppure no se non me lo dici?

    Bastava scrivere "il problema è che il form non si chiude mentre io vorrei che si chiudesse automaticamente", punto.

    Originariamente inviato da FrozenFire83
    Quello che avviene è esattamente quello che ho scritto
    Già, ma se non spieghi cosa volevi invece ottenere risulta difficile capire cosa c'è che non va in quello che hai scritto che poi è quello che avviene, ti pare?

    Se ti vernicio i muri di giallo e il tuo problema sta nel colore utilizzato, non posso rimediare al problema se non mi dici in realtà quale colore volevi ottenere.


    Originariamente inviato da FrozenFire83
    NON SI CHIUDE IL FORM BENCHE' LA ME.CLOSE() VENGA ESEGUITA....
    Per favore, non scriviamo frasi URLATE e addirittura in grassetto, perchè di poveri stupidi qui non c'è ne sono.

    Se vuoi una risoluzione rapida dei tuoi problemi, dovresti semplicemente avere almeno l'accortezza di spiegare nel modo più semplice possibile quello che ottieni e quello che vorresti in realtà ottenere, invece di ricopiare lo stesso messaggio 3 volte aggiungendo una minima indicazione ad ogni operazione.

    Rispondere non è obbligatorio, ma se non sei preciso nel definire il problema non aspettarti che qualcuno perda ulteriore tempo nel cercare di comprenderlo; spendere tempo nello spiegare le cose attentamente ne vale la pena se vuoi ricevere delle risposte sensate e precise.

    Originariamente inviato da FrozenFire83
    Se continuiamo a non capirci tra un po' getto la spugna e apro un nuovo post.... )
    Basterebbe spiegarsi correttamente in questo post... non è che l'apertura di un nuovo argomento risolva i problemi di comprensibilità.

    Originariamente inviato da FrozenFire83
    Se il file non esiste il form dovrebbe chiudersi all'istante, ma questo non avviene....
    Semplice: non puoi chiudere il form nell'evento OnLoad, ed effettivamente ha poco senso creare un form, chiedere di visualizzarlo per poi non mostrarlo nemmeno...tanto vale evitare di chiamare la Show se le condizioni necessarie non sussistono (non esiste il file, in questo caso).

    Originariamente inviato da FrozenFire83
    Ora sono stato più chiaro?
    Decisamente.

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

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

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.