2010-07-29 9 views
3

Dows n'importe qui sait comment je peux créer une fonctionnalité de délai dans une application Windows Forms.Configuration d'une fonctionnalité 'Timeout' dans l'application Windows Forms

L'application est pilotée par les événements, mais je pense en quelque sorte à utiliser une minuterie qui décompte par exemple pendant 10 minutes, et une fois la minuterie cochée puis nous expirer l'utilisateur.

Le problème que j'ai est comment puis-je réinitialiser le minuteur chaque fois que la souris est déplacée ou cliquée.

Toute aide appréciée.

Vive

Répondre

1

vous pouvez utiliser System.Windows.Forms.Timer.

vous pouvez le faire glisser de votre boîte à outils vers la surface du concepteur.

Utilisez la fenêtre des propriétés pour définir la propriété Interval sur l'intervalle de temps souhaité (milisecondes), la propriété Enabled doit être définie sur false.

sur le paramètre de charge, définissez la propriété du temporisateur Enabled sur true.

(Le gestionnaire d'événements dans l'échantillon sont écrites en utilisant C# - désolé)

private void Form1_Load(object sender, EventArgs e) { timer1.Enabled = true; }

Double cliquez sur l'événement timer tick pour vous inscrire à l'événement, et fermez le formulaire sur la tique minuterie

private void timer1_Tick(object sender, EventArgs e) { Close(); }

+0

Comment est-ce que cela fonctionne avec les formes modales? –

+0

si par "modal" vous voulez dire "ShowDialog" et vous implémentez ce code dans la fenêtre principale (celle qui est sur le 'Application.Run') que la réponse est - oui toutes les fenêtres modales se fermeront aussi. –

+0

Brillant, merci pour votre aide –

0

Dans la mise timer.Interval à 0, il ne fonctionne pas?

Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove 
    Me.Timer1.Stop() 
    Me.Timer1.Start() 
End Sub 
+0

Salut Et où dois-je redémarrer le minuteur? –

+0

Aussi, comment cela fonctionne où j'ai plusieurs formes modales? –

+0

J'ai modifié le code – Florian

0

aussi mauvais que cela puisse paraître, je pense que la meilleure façon pour cela est d'utiliser un objet system.timer avec un intervalle de jeu de quelques millisecondes au maximum. Ce que j'ai vu une fois, c'est l'utilisation d'une variable globale qui recevrait l'heure de la dernière action et cette variable serait définie sur Now (en utilisant une fonction globale par exemple) chaque fois qu'une action est effectuée. Dans votre événement chronométré, vous vérifiez si maintenant si plus grande que la dernière action avec votre limite de 10 minutes et agir en conséquence.

En ce qui concerne l'application multi-formulaire, vous pouvez soit utiliser une minuterie différente sur chaque formulaire, ou seulement avoir la minuterie sur votre formulaire principal.

Espérons que ça aide.