cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 2012
-
8 août 2006 à 15:38
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
10 août 2006 à 20:18
bonjour,
j'ai un formulaire a partir duquel j'en appelle un autre
mon_form fo= new mon_form();
mon_form.show();
et je voudrais que le formulaire qui appelle mon form soit fermé ensuite
alors je mets this.dispose()
comme ce formulaire contient l'autre ;lorsqu'il est disposed l'autre l'est egalement
Comment peut -on faire pour faire disparaitre le fromulaire appelant sans faire disparaitre le fils?
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 8 août 2006 à 15:50
y a un souci dans ton code ;)
mon_form fo= new mon_form();
fo.show();
le this.Dispose() ne ferme pas que le formulaire mais aussi l'application... du moins si ce formulaire est celui-ci qui est lancé au démarrage de l'application.
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 8 août 2006 à 16:15
ca dépend...
si tu as encore besoin d'utiliser ton formulaire, il est préférable de faire un Close()... par exemple, récupérer la valeur d'une propriété...
par contre, si le formulaire n'a plus de raison d'être... Dispose().
la meilleur habitude à prendre c'est de faire ceci :
string ret;
using (MonForm f = new MonForm()) {
if (f.ShowDialog() == DialogResult.OK) {
// je travaille encore avec les propriété de mon formulaire...
ret = f.MonPropriete;
}
} // ici le using fait un Dispose() tout seul.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 8 août 2006 à 18:06
Si c'est une forme modale ouverte avec ShowDialog, Close n'appelle pas Dispose, il faut le faire soit même, cela permet de faire apparaître et disparaître la forme plusieurs fois sans la créer et la détruire à chaque fois, par contre avec une forme non modale ouverte avec Show, Close appelle toujours Dispose.
public partial class Form1 : Form
{
public Form1( )
{
InitializeComponent( );
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 8 août 2006 à 18:12
Il me semblait bien que Close() était appelé, mais je voulais pas dire de bêtise.
Par contre, je ne connaissais pas la petite astuce pour la fenêtre ouverte en ShowDialog !
Donc merci pour cette petite précision...
cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 20122 10 août 2006 à 06:25
Merci bien pour toutes ces precisions cela me semble un peu plus clair maintenant.
Pour résumer si je veux pouvoir rappeler un formulaire qui a été fermé sans en créer un nouveau, je fais
formulaire.showdialog et ensuite je peux faire close (ou cliquer sur la croix du formulaire)?
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 10 août 2006 à 09:50
dans les propriétés de ton formulaire, tu en as 2 qui sont pratiques :
<li>AcceptButton</li><li>CancelButton</li>Par défaut, ton formulaire changera la couleur du bouton "AcceptButton" pour qu'il soit "par défaut", et le "CancelButton" sera relié à la touche Echappe.
Dans le délégue de l'évènement Click de ton AcceptButton, à la fin de ton traitement il te suffit de faire ceci :
this.DialogResult = DialogResult.OK; // ou this est le formulaire courant.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 10 août 2006 à 10:13
Tu peux tout faire via le designer, dans les properties (tu vas pas exemple sous CancelButton, et la il te créer une liste avec tout les boutons disponible sur ta form qui peuvent être rattaché au Cancel).
Pour le bouton d'aide, il suffit d'assigner à un Control l'event HelpRequested qui est déclenché quand on clique dessus avec le "?".
cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 20122 10 août 2006 à 12:33
je ne comprends pas trop l'interet des cancel button et accept button
en fait on assigne des boutons du formulaire et ensuite ? (cela donne - t -il la propriete dialogresult.ok ou Cancel au dialogresult du formulaire?
Par contre pour le help button , je pensais qu'il y aurait justement un bouton avec ? pres des bouton sstandards en haut a droite du formulaire. Mais si je met la prpriete helpbutton a true, je n'obtiens rien, je vois pas du totu comment faire.
Ou pourrais-je trouver des exemples?
ou en avez vous?
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 10 août 2006 à 13:36
Pour le help, les properties MaximizeBox et MinimizeBox doivent absolument être les deux sur false. Ensuite tu verras apparaître le point d'interrogations. Puis, tu t'abonnes à l'event HelpRequested comme dit plus haut, et l'event sera déclenché si le user clique sur le bouton "?" puis sur ton control.
Pour ce qui est des CancelButton et AcceptButton, c'est juste des simplifications. Si tu as par exemple un bouton annuler qui ferme ta form, tu le set comme CancelButton et si le user clique sur ESC ca va directement appeler le code qu'exécute le bouton annuler (et donc certainement fermer la Form). En plus, ça te permet de faire directement des tests du genre :
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 10 août 2006 à 20:18
Tu peux eviter de passer par un évènement, la classe button a une propriété DialogResult, c'est la valeur qui sera renvoyée si tu affiches la forme avec ShowDialog.
public class Form2 : Form
{
public Form2( ) : base( )
{
Button accept = new Button( );
accept.Text = "OK";
accept.Location = new Point( 10, 10 );
accept.DialogResult = DialogResult.OK;
this.AcceptButton = accept;