IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Fermeture de la fenêtre avec timer


Sujet :

VB.NET

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut Fermeture de la fenêtre avec timer
    Bonjour

    Je ferme la fenêtre soit en cliquant sur un bouton ou soit en cliquant sur le X
    Quand je clique sur le bouton je déclenche un timer pour donner effet de fondu.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      Private Sub ToolStripButtonexit_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ToolStripButtonexit.MouseDown
            flagexit = True
            Dim exitlogo As New Panel
            exitlogo.BackgroundImage = My.Resources.exitlogo_fw
            exitlogo.BackgroundImageLayout = ImageLayout.None
            exitlogo.Size = My.Resources.exitlogo_fw.Size
            Me.Controls.Add(exitlogo)
            exitlogo.Location = New Point((ClientSize.Width - exitlogo.Width) \ 2, (ClientSize.Height - exitlogo.Height) \ 2)
            exitlogo.BringToFront()
            Timerclose.Interval = 1
            Timerclose.Start()
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Timerclose_Tick(sender As Object, e As System.EventArgs) Handles Timerclose.Tick
            DirectCast(sender, Timer).Interval = 20
            Me.Opacity -= 0.01
            If Me.Opacity = 0 Then
                DirectCast(sender, Timer).Stop()
                Me.Close()
            End If
        End Sub
    c

    jusqu'à la pas de problème
    maintenant j'essaie de faire la même chose si je clique le X de la fenêtre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Formpreface_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            If flagquit And Not flagexit Then
                Dim exitlogo As New Panel
                exitlogo.BackgroundImage = My.Resources.exitlogo_fw
                exitlogo.BackgroundImageLayout = ImageLayout.None
                exitlogo.Size = My.Resources.exitlogo_fw.Size
                Me.Controls.Add(exitlogo)
                exitlogo.Location = New Point((ClientSize.Width - exitlogo.Width) \ 2, (ClientSize.Height - exitlogo.Height) \ 2)
                exitlogo.BringToFront()
                Timerclose.Interval = 1
                Timerclose.Start()
            End If
        End Sub
    bien sur le timer n'est pas déclenché donc la fenêtre se ferme

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    L'évènement "FormClosed" est exécuté après la fermeture de la fenêtre, c'est donc trop tard
    Il faut utiliser l'évènement "FormClosing" qui est exécuté avant la fermeture de la fenêtre.
    (et bien sur gérer l'autorisation de la fermeture qui positionnera e.Cancel et déclenchera le timer )
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        Dim t As Integer = 3 ' 3 secondes d'attentes
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Timer1.Interval = 1000
        End Sub
        Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            Label1.Text = String.Format(" veuillez patienter, fermeture dans {0} seconde(s)", t)
            e.Cancel = Not Timer1.Enabled ' si le timer n'est pas lancé, interdit la fermeture, sinon l'autorise
            Timer1.Enabled = Not Timer1.Enabled ' si le timer n'est pas lancé, le lance, sinon l'arrête
        End Sub
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
            t -= 1 ' compte à rebours
            Label1.Text = String.Format(" veuillez patienter, fermeture dans {0} seconde(s)", t)
            If t <= 0 Then Close() ' fini
        End Sub
        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            Close()
        End Sub
    Note : si l'utilisateur est pressé et reclique une 2 ème fois, la fermeture est immédiate. (dans ce cas pour interdire le 2ème clic, il faut passer par un flag qui gérera tout d'entré.)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Timer et fermeture de la fenêtre
    Par takinelinfo dans le forum C#
    Réponses: 2
    Dernier message: 21/09/2011, 01h28
  2. Fermeture d'une fenêtre avec un thread
    Par Jerepain dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/05/2009, 14h17
  3. Fermeture d'une fenêtre avec tous les onglets ouverts
    Par Invité dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/11/2008, 08h44
  4. Réponses: 36
    Dernier message: 23/05/2007, 17h54
  5. Réponses: 5
    Dernier message: 15/01/2007, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo