IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

TextBox à un autre avec la touche "enter"


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    vb
    vb est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 83
    Par défaut TextBox à un autre avec la touche "enter"
    Bonjour,
    Je désire utiliser la touche "enter" au lieux de la touche tab pour passer d'un TextBox à l'autre, comment éléminer le "beep sonore",? voici mon code qui fontionne bien à part le "beep"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
     
            If e.KeyCode = Keys.Enter Then
                TextBox2.Select()
            End If
        End Sub
    Dans vb je faisais dans keyPress
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If KeyAscii = 13 Then KeyAscii = 0
    Mais ici je cale

    Merci à vous
    vb

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    C'est Focus() à utiliser plutot que Select() je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
     
            If e.KeyCode = Keys.Enter Then
                TextBox2.Focus()
            End If
        End Sub

  3. #3
    vb
    vb est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 83
    Par défaut
    Bonjour,
    J'ai essayé
    Le beep est toujours là
    vb

  4. #4
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Effectivement le beep est toujours la

    Pour contrer ce problème j'ai opté pour une prefiltrage des messages Windows :
    Je l'ai codé en C# mais je te livre la chose traduite (j'espère correctement) en VB.NET :

    Petite classe de prétraitement des messages

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Public Class MyMessageFilter 
        Implements IMessageFilter 
    Private _Form As Form 
        Public Property Form() As Form 
            Get 
                Return _Form 
            End Get 
            Private Set(ByVal value As Form) 
                _Form = value 
            End Set 
        End Property 
     
        Public Sub New(ByVal form As Form) 
            Me.Form = form 
        End Sub 
     
        Public Function PreFilterMessage(ByRef m As Message) As Boolean 
            If Me.Form IsNot Nothing AndAlso Me.Form.ActiveControl IsNot Nothing Then 
                If m.Msg = 256 Then 
                    ' code d'une touche appuyé 
                    If m.WParam.ToInt32() = 13 Then 
                        Dim textbox As TextBox = TryCast(Form.ActiveControl, TextBox) 
     
                        If textbox IsNot Nothing AndAlso (textbox.Multiline = False OrElse (textbox.Multiline = True AndAlso textbox.AcceptsReturn = False)) Then 
                            ' va chercher le prochain control 
                            Dim nextControl As Control = Form.GetNextControl(textbox, True) 
     
                            If nextControl IsNot Nothing Then 
                                nextControl.Focus() 
                            End If 
     
                            Return True 
                        End If 
                    End If 
                End If 
            End If 
     
            Return False 
        End Function 
    End Class
    Dans la Form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    ' La form sur laquelle on travaille 
     
    Public Partial Class Form1 
        Inherits Form 
        Private filter As MyMessageFilter 
     
        ''' <summary> 
        ''' Constructeur 
        ''' </summary> 
     
        Public Sub New() 
            InitializeComponent() 
     
     
            filter = New MyMessageFilter(Me) 
            Application.AddMessageFilter(filter) 
     
            AddHandler Me.Load, AddressOf Form1_Load 
        End Sub 
     
        Protected Overloads Overrides Sub OnClosed(ByVal e As EventArgs) 
            Application.RemoveMessageFilter(filter) 
            MyBase.OnClosed(e) 
        End Sub 
    End Class
    La touche enter ne Beep plus et se comporte comme une tabulation.
    Ca ne prend en compte que les textboxs (mais pas les multilignes sauf celle n'acceptant pas le caractères Return).
    Cela s'applique a toute les textboxs de ta Form.

  5. #5
    vb
    vb est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 83
    Par défaut
    Bonjour,
    Merci pour votre code
    J'ai juste deux petits message d'erreur
    Je crée une classe selon votre premier code
    juste sur -->IMessageFilter
    vb.net me dis
    MyMessageFilter doit implémenter'Function PreFiterMessage'ByRef m as message) as Boolean'pour l'interface System.Windows.Forms.IMessageFilter'
    Dans le deuxième code après Form1_Load VB.net me dis que
    Form1_Load n'est pas déclaré.
    Les classes et moi je suis un peu perdu dans ce domaine
    Merci de me donner autant d'attention.
    vb

  6. #6
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    J'ai juste deux petits message d'erreur
    Je crée une classe selon votre premier code
    juste sur -->IMessageFilter
    vb.net me dis MyMessageFilter doit implémenter'Function PreFiterMessage'ByRef m as message) as Boolean'pour l'interface System.Windows.Forms.IMessageFilter'
    Désolé je ne vois pas... Il y aurait une star de VB.NET qui pourrait te répondre ?

    Dans le deuxième code après Form1_Load VB.net me dis que Form1_Load n'est pas déclaré.
    Le deuxième code est à placer dans ta Form. Form1 est un exemple que j'ai pris. Ta Form doit surement avoir un autre nom.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer d'une zone à l'autre avec la touche enter
    Par claude dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 11/01/2012, 10h20
  2. [XL-2007] Passer d'un textbox à l'autre avec la touche Tab
    Par formabox dans le forum Excel
    Réponses: 2
    Dernier message: 01/12/2011, 11h41
  3. Réponses: 4
    Dernier message: 18/10/2007, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo