Annuler une opération en boucle par appui de la touche echap

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 632 fois - Téléchargée 26 fois

Contenu du snippet

Detecter si la touche Echap est enfoncée. Permet d'annuler une opération en boucle.
L'exemple suivant necessite juste un bouton pour démarrer la boucle "dans la procedure MySub".
Veuillez noter que la fonction ProcessCmdKey ne necessite aucun appel direct de votre part, elle est executée directement donc vous pouvez l'utiliser partout dans votre programme.

Merci pour vos commentaires.

Source / Exemple :


Public Class Form1
    'declarer une variable boolean pour la touche ESC
    Public CancelPressed As Boolean = False

    'Fonction pour detecter la touche du clavier
    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        CancelPressed = keyData = Keys.Escape
    End Function

    'Test
    Sub MySub()
        Do
            'faire les opérations
            Me.Text = Now.Second
            CancelPressed = False
            Application.DoEvents()
            If CancelPressed Then
                If MsgBox("Abort current operation?", MsgBoxStyle.RetryCancel & MsgBoxStyle.Question) = MsgBoxResult.Yes Then
                    Exit Do
                End If
            End If
        Loop Until CancelPressed
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MySub()
    End Sub
End Class

A voir également

Ajouter un commentaire

Commentaires

Messages postés
17
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
16 juin 2008

Bonjour
Oui, c l'équivelent de keypress pour vb. Celle-ci a l'avantage de ne pas necessiter un objet (form, image, label, text..).
Messages postés
14677
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
143
Bonjour, C'est donc un peu comme l'event KeyPress ?
Messages postés
17
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
16 juin 2008

Bnjour,
En fait la fonction est nouvelle dans VB.NET, celle déclarée dans le code est héritée depuis la fonction d'origine :
Protected Overrides Function ProcessCmdKey ( _
ByRef msg As Message, _
keyData As Keys _
) As Boolean
Messages postés
14677
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
143
Bonjour,

C'est normal que ta fonction ProcessCmdKey ne retourne rien ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.