meerdere forms gebruiken

Status
Niet open voor verdere reacties.

badboyR

Gebruiker
Lid geworden
11 apr 2012
Berichten
28
Weet iemand hoe je meerdere forms moet gebruiken. Ik wil dat het programma het ene venster sluit en dan een nieuw venster laten verschijnen en dat blijven uitvoeren.

Ik heb dit geprobeerd, maar het venster verscheen en verdween weer direct:
Code:
this.Close();
main showForm = new main();
showForm.Show();

Weet iemand hoe ik dit moet doen?
Alvast bedankt.
 
Je kunt gewoon in de constructor van je hoofdscherm een form openen en zodra deze gesloten wordt gaat het laden van je hoofdscherm verder.

In geval van een login scherm kun je dus ook gemakkelijk het resultaat hiervan opvangen in je hoofdscherm en dingen instellen etc.

Code:
        public Form1()
        {
            InitializeComponent();
            using (var splash = new frmSplash())
            {
                splash.ShowDialog();
            }
        }

In het geval van een simpel splash scherm kun je gewoon na het laden van het splash form een timer starten en na X seconden de splash sluiten of met een button, net wat je wilt.
 
Bedankt voor alle antwoorden, de splashscreen is precies wat ik wilde. Alleen heb ik er een klein probleem mee. Ik wil bij het opstarten het instellingen menu weergeven voor het hoofdscherm. Maar alleen het instellingen menu verschijnt. Als ik weer terug ga naar het hoofd scherm én dan op instellingen klik verschijnt het scherm goed.

Programma:
Code:
        static void Main()
        {
            if (GTA.isInstalled() == true)
            {
                if (Geïnstalleerd() == true)
                {
                    string[] settings = UserSettings.Get();
                    settings[1] = Globals.Taal;
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    if (settings[4] == "true")
                    {
                        main.Flag1 = true;
                        Application.Run(new main());
                    }
                    else
                    {
                        main.Flag1 = false;
                        Application.Run(new main());
                    }
                }
                else
                {
                    MessageBox.Show("Er is programma data beschadigd, herinstalleer het programma");
                }
            }
            else
            {
                MessageBox.Show("GTA IV is niet geïnstalleerd!");
            }
        }

MainForm:
Code:
        public main()
        {
            Tekst = Language.GetTextMain("Nederlands"); // Globals.Taal
            InitializeComponent();        
            if (Flag1 == true)
                {
                    StartSettings();
                }
        }

Weet ook iemand hoe ik een tweede "hoofdvenster" kan maken, zonder dat het direct verdwijnt.
 
Als je een form variable maakt, roep je eerst de constructor aan ( var form1 = new Form1(); ) en daarna gebruikt je de Show() method om het form te laten zien.
Als je dus een ander form in de constructor van form1 maakt en laat zien zal daarna pas het 1e form zichtbaar worden.

In geval van ShowDialog zal dat form pas zichtbaar worden wanneer het 2e form sluit. (zoals het splash voorbeeld)
- kijk maar eens wat er gebeurt als je bij je splash ShowDialog() vervangt door Show()

Als je wilt dat je 2e form zichtbaar wordt nadat het 1e form te zien is kun je gebruik maken van het form Shown event (komt net nadat het form zichtbaar wordt)
 
Het eerste probleem was simpel op te lossen door this.show(). Het tweede probleem is ook opgelost. Ik heb er weer een splashscreen van gemaakt en het eerste scherm onzichtbaar gemaakt. Maar is er ook een manier om this.close() te doen en verder te gaan met alleen de nieuwe form. Dit is mij niet gelukt, ook niet met het form.shown event. Form.show werkt overigens niet. Form.showdialog werkt wel.
 
Het kan dat show niet werk omdat het geheel in een using statement staat, maak als je dat weglaat werkt show wel.

Heb je een programma wat steeds van het ene naar het andere form gaat? Wat moet je precies bereiken met het programma?

Je kunt ook altijd Hide ipv Close gebruiken of user controls in je main view laden ipv forms gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan