Afficher Form2, masquer Form1 : tutoriel ne fonctionne pas
Citation:
Envoyé par nico-pyright
Il faut dans un premier temps créer une nouvelle Winform :
Click droit sur le projet --> Add -- New Item --> UI --> Winforms Form.
Là, nommez-la comme bon vous semble, par exemple Form2. Visual Studio génère donc une nouvelle classe, et la winform est modifiable également à travers l'IDE.
Pour afficher cette nouvelle form, par exemple depuis un click sur un bouton de la première form, il faut inclure le Form2.h dans le fichier .h de notre première Form (Form1.h par défaut).
Ensuite dans l'événement du click sur le bouton (ou autre), il faut instancier la classe et appeler la méthode
Show() sur l'objet créé.
Code:
1 2
| Form2 ^maForm2 = gcnew Form2();
maForm2->Show(); |
Notez que la méthode Show() affiche la fenêtre simplement. On peut également utiliser
ShowModal() pour qu'elle soit modale comme une boîte de dialogue.
J'ai suivi à la lettre. J'ai placé #include "Form2.h" avant la balise #pragma once de Form1.h. OK pendant le débogage, quand on appuie sur le bouton, la form s'affiche... mais autant de fois que l'on pousse sur le bouton !
Code:
1 2 3 4 5 6
| private: System::Void button1_Click(System::Object^ sender,
System::EventArgs^ e) {
Form1 ^Etape1 = gcnew Form1();
Etape1->Hide();
Form2 ^Etape2 = gcnew Form2();
Etape2->Show(); |
Comment se fait-il que la Form1 ne se masque pas ? Elle devrait...
En fait, j'aimerais faire une sorte d'assistant genre Assistant Installer un programme. Donc avec un bouton suivant, et un bouton précédent qui permettent de naviguer entre les différentes étapes.
J'avais pensé à un système de contrôles visibles et invisibles, tout cela sur une même Form, mais récemment j'ai eu des problèmes à cause d'une groupBox de m*rde qui a tout fait foirer. Résultat je dois recommencer... Et je sais que ce n'était pas la bonne solution.
Donc voilà ma question : comment faire cela : Form1 -> on pousse sur suivant -> elle se change en Form2 -> etc.
(PS : Application WinForms en .NET)