Utilisation spéciale de la touche Suppr [Résolu]

- - Dernière réponse :  Zermelo - 29 nov. 2012 à 13:10
Bonjour à tous.

Dans le code suivant
Private Sub tBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tBox.KeyDown
        If e.KeyValue = 46 Then
            'code quelconque
        End If
    End Sub

tBox est une TextBox. Quand celle-ci détient le focus, un clic sur la touche "Suppr" exécute le "code quelconque", puis efface le caractère qui suit le point d'insertion. J'aimerais que cet effacement ne se produise pas (je cherche à obtenir par la touche "Suppr" un effacement spécifique).

Merci de m'apporter cette aide, si toutefois cela est possible.


Étant illettré, je signe d'une croix : ×
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Bonjour, ShayW,
C'est parce qu'il semble vouloir faire une certaine gymnastique assez curieuse et qu'il ne veut pas que cette touche efface comme elle le fait habituellement, mais "autrement" (et on ne sait pas quel est cet "autrement")
Va donc savoir le propos d'une telle manoeuvre !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 105 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Comment déniches-tu des choses pareilles, si tu ne connais pas VB.net

Nul besoin de le connaître pour consulter son MSDN ! . Voilà tout !
Libère cette discussion (clic sur le tag "réponse acceptée", s'il te plait.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 105 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Voilà quand-même comment j'ai cherché et trouvé :
Regarde comme c'est simple :

Quelle serait la classe concernée, sinon celle que je mets ici en rouge dans ta déclaration de procédure évènementielle ?
Private Sub tBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tBox.KeyDown
Rest plus qu'à ouvrir MSDN sur ce mot ===>> et on y repère immédiatement cette rubrique, dont le nom parle de lui-même
Tapez le texte de l'url ici.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 105 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
3
Merci
Bonjour Zemerlo,
Nul besoin de le connaître pour consulter son MSDN !
Mouais, en fait il code en .NET en douce sans vouloir l'avouer

@ucfoutu:
C'est une blague hein !
Amitiés.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 105 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
C'est çà, banana32 ...
Et dans la foulée, l'athée que je suis s'est également mis à aller à la messe tous les dimanches et aux vêpres tous les jours ...



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 105 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
dit alors, avant même d'exécuter "code quelconque" que e.KeyValue = 0


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
0
Merci
Bonjour ucfoutu.

Merci pour ta réponse. Hélas e.KeyValue n'est accessible qu'en lecture.

Amicales salutations.

Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
1Ah ... Je ne connais pas VB.Net ...
Essaye alors, toutefois :
e.SuppressKeyPress = true
dans ce cas.
Sinon : attends le passage d'un vb.Nettiste.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
0
Merci
Bonjour
pas compris
Pourquoi utiliser la touche suppr ou del si tu ne veux pas effacer
un peu comme je veux cliquer la touche A
mais sans écrire A dans le textbox

soit sauvegarde le contenu de ton textbox dans
un string et remets le après
Commenter la réponse de cs_ShayW
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
J'irais presque jusqu'à parier (en faisant remonter à la surface mes acrobaties inutiles de quand j'étais plus jeune) qu'il cherche à idéaliser la saisie (contrôle de la saisie en cours de saisie) et qu'il se trouve bien embêté lorsque l'utilisateur utilise la touche suppr ...
Mais laissons-le nous dire ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
5622
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 décembre 2018
0
Merci
Bonjour,
Essaie ceci:

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyValue = 46 Then
            MsgBox("La touche suppr est pressée")
            TextBox1.SelectionStart = 32767
        End If
    End Sub



@+Le Pivert
Commenter la réponse de cs_Le Pivert
0
Merci
Tu m'épates, mon cher ucfoutu.

Comment déniches-tu des choses pareilles, si tu ne connais pas VB.net ? Voici le code qui me donne tout satisfaction
Private Sub tBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tBox.KeyDown
        If e.KeyValue = 46 Then
            'code quelconque
            e.SuppressKeyPress = True
        End If
    End Sub


Un grand merci.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Je vois que j'ai provoqué quelques curiosités.

J'explique donc. Par copier-coller, je récupère dans un contrôle TextBox des données textuelles à partir du Net. Certaines lignes sont sans intérêt, d'autres contiennent une information numérique que je veux exploiter. Pour faciliter le travail, je veux supprimer les lignes sans intérêt, et supprimer les autres dès qu'elles sont exploitées. Ergonomiquement, le mieux est d'employer la touche Suppr, en lui faisant supprimer la ligne qui contient le point d'insertion, mais non le premier caractère de la ligne qui la précédait. Et pour satisfaire toutes vos curiosités, voici le "code quelconque"

Private Sub SupprimerLigneActive()
        Dim Déb As Integer, Fin As Integer, Ins As Integer
        With tBox
            Déb 0 : Ins .SelectionStart : If Ins = .TextLength Then Exit Sub
            Do
                Fin .Text.IndexOf(vbNewLine, Déb) : If Fin -1 Then Exit Do
                If Fin >= Ins Then Exit Do
                Déb = Fin + 2
            Loop
            .SelectionStart = Déb
            .SelectionLength = Fin - Déb + 2
            .SelectedText = ""
        End With
    End Sub


Merci à tous ceux qui ont participé à cette discussion.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Bonjour.

J'espère que personne n'a utilisé le code que j'ai fourni, car en l'état il peut conduire à un plantage. La raison en est qu'il suppose que chaque ligne est formée de son texte suivi des deux caractères de fin de ligne. Or cela n'est pas toujours le cas. Voici donc le code complet
Public Class Acceuil

    Private Sub tBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tBox.TextChanged
        Normaliser()
    End Sub

    ''' <summary>
    ''' Fait en sorte que tBox.Text se termine par vbNewLine.
    ''' </summary>
    Private Sub Normaliser()
        Dim n As Integer
        With tBox
            n = .Text.Length : If .Text.Substring(n - 2, 2) <> vbNewLine Then .Text &= vbNewLine
        End With
    End Sub

    Private Sub tBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tBox.KeyDown
        If e.KeyValue = 46 Then
            SupprimerLigneActive()
            e.SuppressKeyPress = True
        End If
    End Sub

    ''' <summary>
    ''' Supprime la ligne contenant le début de la sélection.
    ''' </summary>
    Private Sub SupprimerLigneActive()
        Dim Déb As Integer, Fin As Integer, Ins As Integer
        With tBox
            Déb 0 : Ins .SelectionStart : If Ins = .TextLength Then Exit Sub
            Do
                Fin .Text.IndexOf(vbNewLine, Déb) : If Fin -1 Then Exit Do
                If Fin >= Ins Then Exit Do
                Déb = Fin + 2
            Loop
            .SelectionStart = Déb
            .SelectionLength = Fin - Déb + 2
            .SelectedText = ""
        End With
    End Sub

End Class


Cordiales salutations.


PS : vaut-il la peine d'en faire un code source ?


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Bonjour à vous deux.

J'ai déclaré acceptées vos réponses parce que je trouve rigolo votre numéro de frères ennemis. Sachez que pour ma part je n'ai aucun scrupule à manger aux deux râteliers (comment se faire deux ennemis en un seul coup).
Dis moi ucfoutu, t'est-il parfois exclamé "je suis athée, Dieu merci" ?

Amicales salutations.

Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo

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.