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

    [C#] Banale domanda su apertura Form

    Ciao ragazzi, una domanda banale: al click di un button faccio aprire una Form
    codice:
    private void btnTp1_Click(object sender, EventArgs e)
            {
                Form21 t = new Form2();
                t.Show();
            }
    Ora vorrei mettere un controllo sul Button in modo tale che se la Form1 è già aperta essa non se ne apra un'altra, come potrei fare?
    Grazie

  2. #2

    Re: [C#] Banale domanda su apertura Form

    Ho fatto un pò di confusione nel copiare il codice, ecco quello giusto:
    codice:
    private void btnTp1_Click(object sender, EventArgs e)
            {
                Form1 t = new Form1();
                t.Show();
            }

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Molto semplice: è auspicabile che, in genere, un preciso Form venga visualizzato da un altro Form (chiamante).

    Nel Form chiamante, è possibile inserire un campo privato che conterrà il riferimento al Form secondario, da utilizzare al posto della variabile locale al metodo riportata nel tuo esempio.

    Quando il Form viene creato, il suo riferimento viene copiato nel membro privato, inizialmente null.

    Quando il riferimento al Form secondario è null, quindi, tale Form non è creato e visualizzato.

    Sarà necessario poi inserire nel Form secondario un campo analogo che mantenga il riferimento al Form primario che lo crea e lo visualizza. In questo modo, è sempre possibile per il Form secondario invocare un metodo del primario per avvertirlo nel momento della chiusura, affinché il Form primario possa aggiornare il proprio riferimento al Form secondario impostandolo nuovamente a null, fino alla prossima creazione e visualizzazione di una nuova finestra.

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

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

  4. #4
    Grazie, spiegazione perfetta!
    Vado subito a provare, ciao

  5. #5
    Mentre implementavo la tua soluzione mi è venuta un'idea: e se invece usassi nella Form principale un variabile statica
    public static bool frm1Aperta;
    e la settassi a true nel formLoad della Form secondaria e a false nel formClose sempre della Form secondaria e poi al click sul Button della Form principale prima di aprire la form secondaria controllassi il valore del flag frm1Aperta?
    Mi sembra funzioni come cosa.... o non è molto elegante fare così?

  6. #6
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    io ho sempre usato delle property per queste cose.

  7. #7
    Originariamente inviato da cassano
    io ho sempre usato delle property per queste cose.
    Qual è il vantaggio nell'usare le property? Per rendermi conto di quale sia la soluzione migliore

  8. #8
    Originariamente inviato da alka
    Molto semplice: è auspicabile che, in genere, un preciso Form venga visualizzato da un altro Form (chiamante).

    Nel Form chiamante, è possibile inserire un campo privato che conterrà il riferimento al Form secondario, da utilizzare al posto della variabile locale al metodo riportata nel tuo esempio.

    Quando il Form viene creato, il suo riferimento viene copiato nel membro privato, inizialmente null.

    Quando il riferimento al Form secondario è null, quindi, tale Form non è creato e visualizzato.

    Sarà necessario poi inserire nel Form secondario un campo analogo che mantenga il riferimento al Form primario che lo crea e lo visualizza. In questo modo, è sempre possibile per il Form secondario invocare un metodo del primario per avvertirlo nel momento della chiusura, affinché il Form primario possa aggiornare il proprio riferimento al Form secondario impostandolo nuovamente a null, fino alla prossima creazione e visualizzazione di una nuova finestra.

    Ciao!
    Scusa alkk, credo di aver aperto un altro post inutilmente, riguardo quello che dici qui, potresti postarmi un piccolo esempio di codice? Te ne sarei veramente grato

  9. #9

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da artistic101
    Scusa alkk, credo di aver aperto un altro post inutilmente, riguardo quello che dici qui, potresti postarmi un piccolo esempio di codice? Te ne sarei veramente grato
    Purtroppo in questi giorni ho tempi molto ristretti e oltremodo limitati.

    Se hai difficoltà, magari posta tu il codice, così qualcuno può eventualmente correggerlo.

    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.