+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Cambiare bottone Form1 da Form2

  1. #1
    oettam001 non è in linea Novello
    Post
    4

    Cambiare bottone Form1 da Form2

    Salve a tutti,
    devo realizzare un'applicazione con due form.
    Il primo form contiene un bottone che, alla pressione, fa aprire un altro form.
    Il secondo form contiene delle checkbox: se abilitate, devono permettere al bottone del primo form di diventare invisibile e far apparire un altro bottone. Come posso fare? non riesco a risolvere questo problema.

    P.s. il form chiamante non si deve chiudere ma deve restare dietro rispetto al form chiamato.

    Grazie in anticipo

  2. #2
    M4ndr4k377 non è in linea Scolaretto
    Luogo
    Roma
    Post
    140
    Ciao oettam001 puoi fare cosi:

    Codice del Form1
    codice:
         public partial class Form1 : Form
        {
            Form2 frm2; //Dichiaro una variabile da usare per la Form2
            private bool btnVisible; //Dichiaro una variabile privata da usare nella proprietà
            //Creo una proprietà per leggere o impostare il valore true o false per il controllo button1
            public bool BtnVisible
            {
                get { return btnVisible; }
                set
                {
                    btnVisible = value;
                    button1.Visible = btnVisible;
                }
            }
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //Ho scelto di fare questo per non perdere lo stato dei controlli del Form2
                if (frm2 == null) //Qui controllo se non ci sono aperte delle finestre Form2
                {
                    frm2 = new Form2(this); //Istanzio la nuova Form2
                    frm2.Show(); //Qui si può usare anche il metodo ShowDialog() per non interagire con la Form1
                }
                else
                    frm2.Show(); //Stessa cosa qui
    
                //Attendo come usi lo Show() perchè puoi in questo caso se rendi non visibile in button1 della Form1 poi non puoi aprire di nuovo la form2, però 
                questo è quello che hai chiesto, vedi tu come procedere.
    
                //Ma se vuoi creare al volo la Form2 senza salvare le impostazioni puoi fare cosi: new Form2.Show();
            }
         }
    Codice della Form2:
    codice:
        public partial class Form2 : Form
        {
            Form1 frm1;
            Button btn2;
    
            public Form2(Form1 frm1)
            {
                InitializeComponent();
                this.frm1 = frm1;
            }
    
            //Nell'evento checkedChanged della checkBox1 la usiamo per la visibilità del button1 nella Form1
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                if (checkBox1.Checked)
                    frm1.BtnVisible = false;
                else
                    frm1.BtnVisible = true;
            }
    
            //Nell'evento checkedChanged della checkBox2 la usiamo per la creazione del controllo del button2 nella Form1
            private void checkBox2_CheckedChanged(object sender, EventArgs e)
            {
                if (checkBox2.Checked)
                {
                    btn2 = new Button();
                    btn2.Text = "Button2";
                    btn2.Visible = true;
                    frm1.Controls.Add(btn2);
                }
                else
                    frm1.Controls.Remove(btn2);
            }
    
            //Ho creato un button per nascondere la Form2
            private void button1_Click(object sender, EventArgs e)
            {
                this.Hide(); 
            }
        }

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi