Utilisation spéciale de la touche Suppr

Résolu
Zermelo - 27 nov. 2012 à 10:25
 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 : ×

15 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2012 à 15:08
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2012 à 16:24
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2012 à 16:41
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
3
Utilisateur anonyme
29 nov. 2012 à 08:39
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.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 nov. 2012 à 09:23
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2012 à 10:32
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
0
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 : ×
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2012 à 13:28
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 nov. 2012 à 14:49
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2012 à 15:14
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 nov. 2012 à 15:23
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
0
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 : ×
0
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 : ×
0
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 : ×
0
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 : ×
0
Rejoignez-nous