Probleme procedure fermeture form

Résolu
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017 - 15 févr. 2012 à 18:48
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017 - 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

14 réponses

thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
17 févr. 2012 à 00:01
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
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 févr. 2012 à 19:37
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
0
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
15 févr. 2012 à 21:14
Nan sa fait toujours la même chose clic sur "no" sa ferme et clic sur "oui" sa boucle
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 févr. 2012 à 21:15
comment est appelée ta fonction Fermeture ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
15 févr. 2012 à 21:32
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
0
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
15 févr. 2012 à 21:38
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 févr. 2012 à 22:18
chez moi cela marche

clique sur yes la form se ferme
no on reste

c'est quoi
connection_FormClosing
?
0
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
15 févr. 2012 à 22:30
c'est l'événement de mon form qui s'apelle connection
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 févr. 2012 à 07:36
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
0
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
16 févr. 2012 à 10:40
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 févr. 2012 à 11:00
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 févr. 2012 à 02:37
l'idée est bonne et reviens a ce que je te disais

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
17 févr. 2012 à 11:30
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
0
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
17 févr. 2012 à 19:39
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.
0
Rejoignez-nous