Probleme procedure fermeture form [Résolu]

thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 15 févr. 2012 à 18:48 - Dernière réponse : thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention
- 17 févr. 2012 à 19:39
Bonjour, comme le titre l'indique j'ai décidé de faire un fonction pour fermer mes forms mais je galere un peu.

    'Message personnalisé de chaque form
    Public Sub Fermeture(ByVal fr As Form, ByVal e As System.Windows.Forms.FormClosingEventArgs)
        If MessageBox.Show("Voulez-vous quitter " & fr.Name, ".:: DEMANDE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            fr.Close()
        Else
            e.Cancel = True
        End If
    End Sub


Quand je clic sur "non" de mon messagebox le form se ferme et sur "oui" sa boucle
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 17 févr. 2012 à 00:01
3
Merci
en faite voila se que j'ai fait, j'me doute que c'est pas très tip-top comme codage mais sa marche nikel

Private Sub connection_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If Me.Visible = True Then
            e.Cancel = Fermeture(Me)
        End If
    End Sub

Private Sub Linscription_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles Linscription.LinkClicked
        Me.Visible = False
        Inscription.Show()
        Me.Close()
End Sub


avec cela je peux naviguer d'un form à l'autre et l'application se ferme à la fermeture du form actif

Merci thomasaurelien 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de thomasaurelien
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 15 févr. 2012 à 19:37
0
Merci
Salut

peut etre
Private Sub Fermeture(ByVal fr As Form)
   If MessageBox.Show("Voulez-vous quitter " & fr.Name, ".:: DEMANDE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            fr.Close()
    Else
        Exit Sub
  End If
End Sub
Commenter la réponse de cs_ShayW
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 15 févr. 2012 à 21:14
0
Merci
Nan sa fait toujours la même chose clic sur "no" sa ferme et clic sur "oui" sa boucle
Commenter la réponse de thomasaurelien
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 15 févr. 2012 à 21:15
0
Merci
comment est appelée ta fonction Fermeture ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 15 févr. 2012 à 21:32
0
Merci
dans form.closing

 Private Sub connection_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Fermeture(Me)
    End Sub
Commenter la réponse de thomasaurelien
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 15 févr. 2012 à 21:38
0
Merci
je viens de faire cela sa marche mais je sais pas si c'est le plus court :

   Private Sub connection_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If Fermeture(Me) Then
            e.Cancel = True
        End If
    End Sub


et la fonction fermeture :

   Public Function Fermeture(ByVal fr As Form)
        If MessageBox.Show("Voulez-vous quitter " & fr.Name, ".:: DEMANDE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            Return False
        Else
            Return True
        End If
    End Function
Commenter la réponse de thomasaurelien
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 15 févr. 2012 à 22:18
0
Merci
chez moi cela marche

clique sur yes la form se ferme
no on reste

c'est quoi
connection_FormClosing
?
Commenter la réponse de cs_ShayW
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 15 févr. 2012 à 22:30
0
Merci
c'est l'événement de mon form qui s'apelle connection
Commenter la réponse de thomasaurelien
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 16 févr. 2012 à 07:36
0
Merci
Clair que c'est une bonne solution...
ou de transmettre 'e' a la fonction Fermeture.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 16 févr. 2012 à 10:40
0
Merci
en faite sa ne marche pas trop bien je m'explique :

Sur mon 1er form j'ai un lien vers un 2ieme form quand je clique je ferme le 1er connection.close() et j'affiche inscription.show() mais du fait que je fait un close() il me demande si je veux fermer ma 1ère page ce qui n'est pas très esthétique.

j'ai essayé de mettre .hide() à la place mais dans ce cas là quand je décide de fermer mon 2ième form celui-ci me pose bien la question de fermeture mais ne ferme pas complétement le projet

quand je clic sur Inscription dans le form Connection
 Private Sub Linscription_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles Linscription.LinkClicked
        Inscription.Show()
        Me.Close()
    End Sub


Fonction fermeture
 'Message personnalisé de chaque form
    Public Function Fermeture(ByVal fr As Form)
        If MessageBox.Show("Voulez-vous quitter " & fr.Name, ".:: DEMANDE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            Return False
        Else
            Return True
        End If
    End Function


appel de la fonction dans Connection (même principe pour Inscription)
Private Sub connection_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If Fermeture(Me) Then
            e.Cancel = True
        End If
    End Sub
Commenter la réponse de thomasaurelien
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 16 févr. 2012 à 11:00
0
Merci
Tu n'es pas obligé d'afficher cette confirmation systématiquement...

Il te suffit de mettre par exemple une propriété
CloseWithoutPrompt dans ta Form

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 17 févr. 2012 à 02:37
0
Merci
l'idée est bonne et reviens a ce que je te disais

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 17 févr. 2012 à 11:30
0
Merci
ouais d'ailleurs j'ai oublié de le préciser dans le précédent message c'est en te lisant RENFIELD que j'ai eu cette idée Merci
Commenter la réponse de thomasaurelien
thomasaurelien 71 Messages postés jeudi 7 juillet 2011Date d'inscription 27 novembre 2017 Dernière intervention - 17 févr. 2012 à 19:39
0
Merci
en faite mon projet est de programmé en réalisant une application multi-couche c'est à dire séparer interface utilisateur, une class USER , une classe Connection et un module qui regroupe mes fonctions.

Je sais pas si ma disposition est correcte j'en ai déduis cela en fonction de ce que j'ai pu lire sur internet

voici mon module de fonction

Module fonction

    '--------- B D D ----------------

    'renvoie l'emplacement où se trouve la BD
    Public Function createChemin() As String
        Dim chemin As String
        Dim dbname As String = "Data_base"
        Dim cheminApp As String = Application.StartupPath
        cheminApp &= ""
        chemin = cheminApp & dbname & ".accdb"
        'MessageBox.Show(chemin)
        Return chemin
    End Function

    'Test si un fichier existe
    ' dans ce cas-là, test si la base existe à l'aide de son chemin
    Public Function ExistBase() As Boolean
        Return System.IO.File.Exists(createChemin())
    End Function

    '--------- FORMULAIRE -----------

    'Message personnalisé de chaque form
    Public Function Fermeture(ByVal fr As Form)
            Return Not (MessageBox.Show("Voulez-vous quitter " & fr.Name, ".:: DEMANDE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes)
    End Function

    'Affichage en fonction du formulaire 
    Public Sub Affichage(ByVal fr As Form, ByVal gb As GroupBox)
        Select Case fr.Name
            Case "connection"
                AffichageConnection(gb)
        End Select
    End Sub

    'Affiche ou pas les ctrl de la page Connection
    Private Sub AffichageConnection(ByVal gb As GroupBox)
        For Each ctrl In gb.Controls
            ctrl.Enabled = False
            If ctrl.Name = "Linscription" Then
                ctrl.Enabled = True
            End If
        Next
    End Sub

    'vérifie si TextBox vide
    Private Function TBvide(ByVal tb As TextBox) As Boolean
        'return true si vide
        Return tb.Text = ""
    End Function

    'vérifie si ComboBox vide
    Private Function CBvide(ByVal cb As ComboBox) As Boolean
        'return true si vide
        Return cb.SelectedText = ""
    End Function

    'Parcours controls dans un GroupBox
    Public Sub Verif_Ctrl(ByVal gb As GroupBox, ByRef ep As ErrorProvider)
        'Pour chaque CTRL dans le GroupBox
        For Each ctrl In gb.Controls
            'Si le type est TextBox
            If TypeOf ctrl Is TextBox Then
                'Si fonction TBvide = true
                If TBvide(ctrl) Then
                    ep.SetError(ctrl, "Champ " & ctrl.name & " vide !")
                End If
                'Si le type est ComboBox
            ElseIf TypeOf ctrl Is ComboBox Then
                'Si fonction TBvide = true
                If CBvide(ctrl) Then
                    ep.SetError(ctrl, "Sélection " & ctrl.name & " vide !")
                End If
            End If
        Next
    End Sub
End Module


je voulais savoir que vous pensiez de cela ? et si la fonction du chemin et la fonction existBase sont a placé dans la classe connection.

Et aussi si par hazard vous auriez un lien pour un exemple simple de VB.net en multi-couche.
Commenter la réponse de thomasaurelien

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.