form hide/show

Status
Niet open voor verdere reacties.

janbe63

Gebruiker
Lid geworden
21 okt 2007
Berichten
64
Beste,

Ik heb 2 form's, nu wil ik graag het volgende:
-1: vanuit een button op form1 form2 openen en form1 hiden.
-2: vanuit een button op form2 form1 weer zichtbaar maken en form2 sluiten.
-3: de close (x) op form2 moet het gehele programma afsluiten.

de button op form1 is nu het volgende:

Code:
        private void inkoop_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.Show();
            this.Hide();
        }

en deze werkt goed.

maar als ik nu op form2 een button plaats met:
Code:
       private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
            Form1.show();
        }

geeft hij:

Error 1 'WindowsFormsApplication4.Form1' does not contain a definition for 'show'

tevens zou ik graag willen weten hoe je de applicatie vanuit form2 kan sluiten als er op de close(x) van het window wordt gedrukt zodat hij niet op de achtergrond blijft draaien.

Jan
 
Ben niet zeker, maar is het niet Form1.Show ipv Form1.show?
 
Nee, dat is het niet Loeri.

Blijkbaar moet in Form2 Form1 worden herkent. Dit gebeurd met

Code:
       private Form1 Form1; //Form1 is the name of the Main form

        public Form2(Form1 Form1)
        {
            InitializeComponent();
            this.Form1 = Form1;
        }

ook de button click moet iets veranderen:

Code:
        private void button1_Click(object sender, EventArgs e)// to close form2 and show main
        {
            this.Form1.Show();
            this.Close();
        }

ik had ook bedacht om

Code:
        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

dit werkt wel voor het sluiten van de applicatie middels de windows close(x). Alleen sluit hij nu ook de applicatie als ik op de knop druk om terug te gaan naar Form1.
Natuurlijk kan ik form2 hiden ipv sluiten bij het gebruik van de "terugkeer"-knop maar dat is niet de bedoeling.
 
Zit er geen verschil in de parameters "sender" en "e" tussen het aanroepen vanuit het sluit kruisje of met this.close?
Dan zou je daar op kunnen controleren.
 
Hallo,

Het kan zijn dat ik de vraag niet helemaal heb gesnapt, maar is het niet gewoon dit:

Form 1 button:

Code:
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Show();
            this.Hide();
        }

Form 2 button:

Code:
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 form1 = new Form1();
            form1.Show();
            this.Hide();
        }

En voor het sluiten van het programma:

Code:
        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

Hoop dat je hier wat aan hebt en succes

Woellie123
 
Het was in principe al goed (form1 meegeven in de constructor) maar het probleem nu is dat het formclosing event niet alleen wordt aangeroepen als je het kruisje klikt.
Dus moet je even een check toevoegen zodat je weet dat er op de knop is geklikt.

Dit kun je bijvoorbeeld zo doen:

een private boolean in het form
Code:
private bool _formToggle;


als je op de knop klikt zet je als eerste de toggle op true
Code:
_formToggle = true;


en in het formclosing event kijk je of de knop is gebruikt (true) zo niet, exit
Code:
if(_formToggle == false)  
{
	Application.Exit();
}

_formToggle = false;

en even de toggle weer terug zetten in oorspronkelijke stand als de knop was gebruikt (voor het geval je form2 ook als private variable gebruikt in form1)
 
Dank je bloodshed dat is de oplossing, een testje of op de knop gedrukt is zodat hij in dat geval terugkeert naar form1.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan