2010-07-16 4 views
0

Mon problème est le suivant: j'ai une machine d'état dans une application et je dois pouvoir mettre en pause la fonction ProcessInput des états actuels tant que l'utilisateur déplace le formulaire le long de l'écran.Evénements de déplacement de formulaire dans Windows Forms

J'ai une propriété appelée "en pause" sur l'état qui fait cela et je redéfinir l'événement OnMove du formulaire afin que la propriété soit définie sur true lorsque l'événement se déclenche. Comment puis-je reprendre la fonction ProcessInput de l'état lorsque l'utilisateur ne déplace plus le formulaire? (Pour être plus précis, je cherche un événement pour mettre un "state.Paused = false" dedans)

Merci d'avance pour votre aide!

Répondre

1

Vous ne savez pas s'il existe un événement spécifique que vous pouvez écouter, mais que pensez-vous de l'utilisation d'une solution de contournement basée sur une minuterie?

Créer une minuterie, réinitialiser et activer le minuteur chaque fois qu'un événement de déplacement se produit. Une fois que la minuterie se déclenche réellement (n'a pas été réinitialisée pendant la durée définie), définissez state.Paused = false.

peut être un peu rudimentry, mais il devrait fonctionner ...

+0

oui, ça pourrait être une solution. merci pour l'entrée! – cantrem

1

Vous avez besoin WM_MOVE message, il est envoyé lorsque le déménagement est fait. Je ne me souviens pas s'il y a un gestionnaire (un événement) dans WinForms pour cela, mais dans le pire des cas, vous pouvez remplacer WndProc de fenêtre et traiter le message manuellement - dans le style C «old school».

+0

J'ai cherché et je n'ai pas pu trouver de gestionnaire. Je suppose que je vais devoir creuser un peu plus loin pour apprendre à fonctionner avec WM_MOVE. merci, il semble que c'est ce dont j'ai besoin. – cantrem

+0

.NET manque certaines fonctionnalités de l'API Win32, mais il est vraiment facile d'ajouter la fonctionnalité: vous pouvez trouver l'en-tête C++ avec la constante WM_MOVE et remplacer WndProc de la classe window (form) pour gérer ce message. – Gobra