Form.close [Résolu]

cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 13 févr. 2011 à 19:51 - Dernière réponse : cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention
- 14 févr. 2011 à 11:31
Bonsoir à tous

j'ai une windowsform application avec 2 form
form1 et form2 et dans chacun d'eux un bouton.
form2 est le startup form
je voudrais que si je clique sur le bouton de form1 celui-ci se ferme et form2 soit visible
et si je clique sur le bouton de form2 qu'il se ferme et form1 soit visible
j'ai écrit ça mais ça ne marche pas l'application se ferme carrément
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
        Form2.Visible = True

    End Sub

End Class

Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
        Form1.Visible = True

    End Sub
End Class


Merci d'avance
Afficher la suite 

9 réponses

Répondre au sujet
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 14 févr. 2011 à 09:07
+3
Utile
La propriété Visible marche parfaitement. D'ailleurs la méthode .Show ne fait rien d'autre que de mettre la propriété visible à True.
Quant au fait que la fenêtre n'existe pas, de faire Form2.Visible = True va automatiquement créer une instance de la classe de base Form2 avant d'appliquer la modification sur la propriété Visible.

Pour ce qui est du .Hide, si cela masque bien la fenêtre en question, celle-ci n'est pas pour autant fermée. S'il est nécessaire de la fermer il faut utiliser .Close.


En modifiant les propriétés du projet pour une fermeture sur le dernier formulaire, le code suivant marche parfaitement :
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.Visible = True
        Me.Close()
    End Sub

End Class

............

Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form1.Visible = True
        Me.Close()
    End Sub
End Class




[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 13 févr. 2011 à 20:42
0
Utile
Ouvre les propriétés de ton projet, onglet Application.

Modifie l'option Mode d'arret pour sélectionner A la fermeture du dernier formulaire.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 13 févr. 2011 à 22:14
0
Utile
j'ai modifié le mode d'arret j'ai le meme
résultat l'application se ferme
Commenter la réponse de cs_ShayW
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 13 févr. 2011 à 22:19
0
Utile
Il faut penser à recompiler pour que le changement soit pris en compte.

Essaye aussi de mettre peut-être le Me.Close après le Form.visible

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
tovin 166 Messages postés samedi 11 décembre 2004Date d'inscription 14 août 2013 Dernière intervention - 14 févr. 2011 à 06:53
0
Utile
Bonjour,
La propriété Visible ne peu marcher qu'autant que la form soit déjà créée.

Il faut donc employer :
Form1.Show()

ou Form2.Show()

Effectivement, Le close ne fonctionne pas. Par contre, avec Hide, ça marche.


On aurait donc :
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.Show()
Me.Hide()
End Sub

End Class

Public Class Form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form1.Show()
Me.Hide

End Sub
End Class
Commenter la réponse de tovin
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 14 févr. 2011 à 09:13
0
Utile
Bonjour Casy
j'ai recompilé et écris le me.close après le
form.visible mais sans résultat
Alors je me suis contenté de la solution proposée
par tovin me.hide et form2.show
bien qu'avec me.hide la form est toujours en
mémoire
Bonjour tovin
je viens de tester
Me.Visible = False
Form1.Visible = True 

équivalent à
me.hide
form1.show 

tous les deux fonctionnent
Commenter la réponse de cs_ShayW
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 14 févr. 2011 à 09:21
0
Utile
Merci Casy ça marche
Commenter la réponse de cs_ShayW
tovin 166 Messages postés samedi 11 décembre 2004Date d'inscription 14 août 2013 Dernière intervention - 14 févr. 2011 à 11:02
0
Utile
Rebonjour,
Désolé Casy,
le code testé sous VB 2010
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.Visible = True
Me.Close()
End Sub
ne marche pas.
Les 2 forms disparaissent de l'écran.

Par contre, la solution de ShayW marche parfaitement.
Commenter la réponse de tovin
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 14 févr. 2011 à 11:31
0
Utile
Le code testé sous VB2010 pour moi aussi marche parfaitement

Tu as pensé à modifier le mode d'arrêt dans les propriétés du projet ?



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.