Hoe Open je een nieuwe Form?

Status
Niet open voor verdere reacties.

Dizaster

Gebruiker
Lid geworden
16 okt 2007
Berichten
35
Hoe kan ik ervoor zorgen dat als ik bijvoorbeeld op button1 druk dat dan Form2 verschijnt?

alvast bedankt
 
Code:
Form _form2 = new Form2();
_form2.visible = true;

Zo moet het lukken.

Indien je nog parameters in je constructor in Form2 hebt zitten.. dan dien je die er ook bij-in te zetten
Code:
Form _form2 = new Form2(parameter1, parameter2);
_form2.visible = true;
 
Laatst bewerkt:
Danku =) nu lukt het maar er zaten nog wat foutjes in de code die jij met gaf
toen ik hem veranderde naar:
Code:
        private void button1_Click(object sender, EventArgs e)
        {
            Form Form2 = new Form2();
            Form2.Visible = true;
        }
deed hij het =)
 
Wat als ik nu de oude form wil laten verdwijnen als de nieuwe opent.. ik probeerde het zo maar zo werkt het niet..
Code:
                formRekenmachine.Visible = true;
                formMenu.Visible = false;
 
Als ik het zo goed uit mijn hoofd weet..
Moet het worden:
Code:
this.Visible = false;
nieuweform.Visible = true;
 
Als ik nu op het kruisje druk word het programma toch niet afgesloten omdat Form1 nog onzichtbaar is.. hoe zorg ik ervoor dat als je op kruisje drukt dat dan Form 1 en Form 2 weggaan? en niet onzichtbaar worden?
 
Als je bij een form de form.closed of form.closing event triggered, kan je er een eigen functie aan koppelen.
Deze kan je in de eventlist vinden bij de eigenschappen van de form.

Vervolgens kan je dan binnen die functie de .Close(); aanroepen van het eerste formulier.
 
Laatst bewerkt:
Code:
        private void formRekenmachine_FormClose(object sender, FormClosedEventArgs e)
        {
            Form formMenu = new formMenu();
            this.Close();
            formMenu.Close();
        }
Als ik nu formRekenmachine afsluit dan blijft het programma nog steeds lopen.. formMenu.visible = false en als ik dan hier formMenu.Close(); invoer blijft hij toch lopen terwijl er geen schermn meer open zijn..
 
Ik heb even een voorbeeld gemaakt hoe je het kan maken.
Wat je doet:

Als je op de knop op Form1 drukt om Form2 te openen, dan maak je een nieuwe Form2 aan en je geeft Form1 mee. Dat doe je door this mee te geven als parameter.
Binnen de contructor van Form2 zet je de meegegeven parameter in een globale variabele van Form2.
Vervolgens maak je de Form2_closed of Form2_Closing event aan.
Binnen die event geef je aan dat je het hoofdform nl form1 wil sluiten.
Dit doe je door globalevariabele.Close();

Dan is je programma afgesloten.
 

Bijlagen

In formMenu
Code:
            {
                Form formRekenmachine = new formRekenmachine(this);
                formRekenmachine.Visible = true;
                this.Visible = false;                
            }
in formRekenmachine
Code:
        private formMenu _formMenu;
        public formRekenmachine(formMenu formMenu)
        {
            InitializeComponent();
            _formMenu = formMenu;
        }
Code:
        private void ExitProgram(object sender, FormClosedEventArgs e)
        {
            _formMenu.Close();
        }


Wat doe ik fout? hij sluit nog steeds niet af.. hij deed het eerst wel maar toen had ik ineens een of andere error en nu doet hij het weer maar sluit weer niet af..
 
Als je de properties van je form erbij pakt, dan kan je daar ook kiezen voor de eventlist.(dat is een bliksemschichtje)
Daar moet de functie ook in gezet worden wil deze werken.

Dan hoe je daar alleen in te zetten:

ExitProgram

___
Code:
public formRekenmachine[COLOR="Red"](formMenu formMenu)[/COLOR]
        {
            InitializeComponent();
            _formMenu = formMenu;
        }
Dat rode is neit verstandig.
Want dan weet je op het laatst niet meer waar je het over hebt..
Het object formMenu of de parameter formMenu.
Daarom kan je beter iets doen als:
Code:
public formRekenmachine(formMenu menu)
        {
            InitializeComponent();
            _formMenu = menu;
        }

Ik had het zelf ook even neergezet zo.. maar dat was even snel inelkaar gezet.. niet helemaal verstandig om het zelf ook zo neer te zetten...
daarnaast is er ook nog verschil..
FormMenu is in C# iets heel anders dan formMenu :)
 
Laatst bewerkt:
Het werkt nu.

Maar ik heb nog 1 laatste vraag:

Als ik bij formMenu hetzelfde inbouw dat als je van formRekenmachine teruggaat naar Menu en ik zet daar hetzelfde neer dan krijg ik in Program.cs deze error :
Code:
namespace WindowsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run([COLOR="Red"]new formMenu()[/COLOR]);
        }
    }
}

Bij het rode krijg ik deze error :

Code:
No overload for method 'formMenu' takes '0' arguments

Hoe Zorg ik ervoor dat dit niet meer verschijnt zelf lukt het me niet..
 
Nou, Als je zeg maar op button1 op Form1 klikt ga je naar Form2 en dan wordt Form1 Afgesloten. Als je dan met button2 op Form2 klikt ga je naar Form1 en wordt Form2 afgesloten. Maar als ik dan compile krijg ik de error beschreven in mijn vorige post.
Ik heb even een klein voorbeeld van de error met Form1 en Form2 gemaakt in de bijlage.
Hij wil dat ik arguments in vul maar ik weet niet welke..
Met button1 en button2 wissel je tussen Form1 en Form2 als je op kruisje drukt moeten allebei de Forms (de zichtbare en de onzichtbare) weggaan.
 

Bijlagen

Laatst bewerkt:
Het werkt op met wisselen nu maar als ik "Form2" afsluit blijft onzichtbare "Form1" open waardoor het programma dus niet is afgesloten,

Code:
        private void formRekenmachine_FormClosed(object sender, FormClosedEventArgs e)
        {
            Form Menu, TextPimper;
            Menu = new formMenu();
            TextPimper = new formTekstPimper();
            Menu.Close();
            TextPimper.Close();          
                       
        }

Dit is code die ik gebruik bij "Form2" om "Form1" en "Form3" af te sluiten en ik zie de fout niet....

Maar nu moet ik gaan dus ik lost het morgen wel op denkik....
 
Om het hele programma af te sluiten kun je gebruiken:

Code:
        private void button1_Click_1(object sender, EventArgs e)

                {
                    Application.Exit();
                }



Mvg Remy
 
Dat rode is neit verstandig.
Want dan weet je op het laatst niet meer waar je het over hebt..
Het object formMenu of de parameter formMenu.

Offtopic: om dit soort 'misverstanden' te voorkomen kan je gebruik maken van "this". Ik vind dat sowieso een nette manier van werken, omdat je dan direct kan zien welke variabelen bij een object horen en welke in de huidige scope.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan