Pagina 2 di 5 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 42
  1. #11
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    87
    grazie 1000

  2. #12
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    allora se devi fare una cosa "al volo" puoi semplicemente usare nella classe program un void statico tipo :
    codice:
    public static Form1 f1;
    
    [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                f1 = new Form1();
                Application.Run(f1);
            }
    
    public static void ChangeForm(object sender, object FormOpen)
            {
                Form f = (Form)sender;
                f.Visible = false;            
                Form fo = (Form)FormOpen;
                fo.Show();            
            }
    poi nel codice della prima form fai :

    codice:
    private void backupDatiToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Program.ChangeForm(this, new Form2());
            }
    e continui cosi per tutte le form in cascata, per chiudere l'applicazione aggiungi in program :

    codice:
    public static void close()
            {
                f1.Close();
            }
    e lo chiami dall'ultima form ( ovviamente sempre Program.close(); )

  3. #13
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    volendo puoi anche evitare i void suggeriti per la program e lasciare public static il campo f1 e pilotarlo dalle altre form (senza close() ChangeForm()) con Program.f1.Close() e Program.f1.Visible = false ecc...

  4. #14
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    87
    senti mi potresti dare il file? perchè non ho capito molto bene dove copiare quei codici.grazie

  5. #15
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    erano solo degli esempi

    era per farti capire come gestire le finestre in modo semplice e rapido (ma non il migliore).

    devi mettere la prima form (quella che viene avviata nella classe program cioè form1) a visible = false e non chiuderla, puoi usare la stessa procedura che usavi prima, solo che anziechè usare Form.Close() usa Form.Visible = false e quando hai finito chiudi la form (o la rendi visibile di nuovo se devi continuare).

    i metodi statici ti servono se devi gestire passaggi di dati (con i limiti del caso) tra le form senza gestire eventi e delegati.

    non ho piu' il tuo codice, ma nel caso non riesci lo scarico di nuovo e ti faccio capire meglio.

  6. #16
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    87
    ok grazie. credo di aver capito. invece di chiudere le form, devo solo farle diventare invisibili.

  7. #17
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    qulle che gestiscono l'apertura della form successiva, ma se fai gestire l'apertura delle forma da form1 ( di tutte le successive) devi tenere aperta solo quella e le altre le puoi chiudere.

    ma per semplicità ti conviene renderle tutte invisibili, tanto non è che ci siano poi tutte queste risorse impegnate!

  8. #18
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    p.s.

    sei uno studente? di dove se non sono indiscreto? (mi puoi rispondere in privato se vuoi)

  9. #19
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    87
    si sono uno studente di cagliari e sto per andara al liceo scientifico, quindi ho 13 anni. comunque se metto, per esempio, nella form madre questo codice per aprirne una nuova:
    codice:
    Form2 f2 = new Form2();
    e poi inserisco lo stesso codice in un'altra form per gestire quella precedente, per esempio renderla invisibile, e mi dice che entra in un ciclo infinito o qualcosa di simile. oppure come faccio a utilizzare gli eventi di un'altra form dalla form madre???se mi rispondi sei un mito non ho ancora capito molto bene come funziona il c#, non so neanche cosa sono le classi e a che cosa servono. ho appena cominciato.

  10. #20
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    la parola "mito" non mi piace (credo che non piaccia a nessuno che non lo sia davvero) e sa di presa per il c.

    comunque...
    oppure come faccio a utilizzare gli eventi di un'altra form dalla form madre???
    e proprio li che li che si usano di piu', scenario :

    f1 (primo form)
    f2 (form aperto dentro f1)

    in f1 crei f2, poi aggiungi l'evento che ti interessa e allo scaturirsi di quest'ultimo verrà eseguito il codice dentro il metodo che hai creato con la gestione dell'evento in f1

    esempio :
    codice:
    public class Form1 : Form
        {
            public Form f2; //imposto f2 come campo della classe
            public Form1() // nel costruttore inizializzo f2
            {
                this.f2 = new Form(); // inizializzo f2
                this.f2.Activated += new EventHandler(f2_Activated); // aggiungo l'evento
            }
    
            //metodo che verrà chiamato quando avviene l'evento
            void f2_Activated(object sender, EventArgs e)
            {
                //codice che verra eseguito quando si attiva la f2
            }
        }
    chiaramente se non ti è chiaro cosa sia una classe ti viene difficile programmare.

    prima conosci la teoria e nel frattempo fai pratica!

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.