matin tout,Compact Framework - Désactiver les événements de souris pendant les charges
Je conçois un certain nombre d'applications cadre compact, et quelque chose qui me échappe toujours est un moyen d'empêcher ce que nous appelons le syndrome de banque yorkshire (de YBS). YBS est nommé avec amour après les points de trésorerie à Yorkshire Bank en raison du fait que leur rafraîchissement d'écran est si lent, et un de mes collègues a appuyé deux fois sur le bouton en pensant qu'il n'avait pas appuyé sur le bouton le £ 20 qu'il voulait (les boutons "Cash Without Receipt" et "£ 100" ont été affectés au même bouton sur les deux écrans différents).
Fondamentalement, je charge tous mes formulaires avec un écran de démarrage au début de l'application et chaque autre forme a un événement public appelé Initialise(). Pour afficher un formulaire, j'ai utilisé Session.Instances.FormName.Initialise() puis un showdialog().
La méthode Initialise() appelle normalement une sorte de réinitialisation de formulaire ou de chargement de données, de sorte que le curseur est également défini dans cette méthode. Le problème survient lorsque l'utilisateur clique sur un bouton pour afficher un formulaire, que le formulaire se charge, mais s'il clique sur l'écran entre temps, ce clic d'écran est transmis au formulaire en cours de chargement (mais non affiché). Par exemple, je clique sur un bouton pour afficher un formulaire, puis sur en bas à gauche de l'écran. Par exemple, je clique sur un bouton pour afficher un formulaire. Dans la plupart de mes applications CF, le bouton en bas à droite est le bouton de retour qui définit DialogResult.Cancel. Ainsi, une fois le chargement terminé, le formulaire n'apparaît pas car le bouton Précédent a été cliqué, même si le formulaire n'a jamais été affiché.
J'ai essayé un certain nombre de choses, y compris this.Enabled = false au début de l'initialisation(), mais il semble que le clic est stocké en arrière-plan, puis l'événement click tiré sur l'écran lorsque le chargement avoir fini. Donc, je me demande maintenant s'il y a un moyen d'interdire toute entrée de la souris pendant mon chargement et de ne l'activer qu'à nouveau juste avant mon Form.ShowDialog()? OU quelqu'un a-t-il de meilleures idées pour y parvenir?
Et un autre exemple ici: http://blog.opennetcf.com/ctacke/2007/05/07/SDFSampleGettingMouseUpAndMouseDownForControlsWithoutThoseEvents.aspx – ctacke