none
provoquer l'évènement valid d'un autre controle RRS feed

  • Question

  • Bonjour

    soit un form avec un controle texbox1

    dans le code à un moment j'aimerai pouvoir ecrire

    me.texbox1.text = "toto"

    et faire un

    me.textbox.validate  

    comme si l'utilisateur avait saisi "toto" puis appué sur entrée ou tab

    Merci de vos réponses

    Cordialement

    Eric

    lundi 23 avril 2012 09:28

Réponses

  • Bonjour,

    Dans ce cas, essayez d'utiliser la classe SendKeys : http://msdn.microsoft.com/fr-fr/library/system.windows.forms.sendkeys.send(v=vs.80).aspx et en particulier la méthode Send().

    Si c'est pour changer le focus, utilisez la méthode Select() sur le contrôle que vous voulez sélectionner : http://msdn.microsoft.com/fr-fr/library/7wt11hea.aspx

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 23 avril 2012 12:38
    Modérateur
  • Bonjour,

    Le plus simple et le plus propre est de créer une méthode privée qui peut-être appelée par vos événements Validating et MouseMove :

        Private Sub TextBox1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
            Me.Traitement()
        End Sub
    
        Private Sub TextBox2_Validating(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
            Me.Traitement()
        End Sub
    
        Private Sub Traitement()
            ' Traitement à effectuer
        End Sub

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mardi 24 avril 2012 07:16
    Modérateur

Toutes les réponses

  • Bonjour,

    Vous voulez déclencher un Validate() à quel moment précisement ?
    Au moment où l'utilisateur appuie sur la touche Enter ou Tab quand il se trouve dans le TextBox ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 23 avril 2012 09:41
    Modérateur
  • Bonjour et merci de votre réponse

    Je souhaite provoquer un validate   dans une code situé en dehors du textbox

    L'utilisateur choisit dans une grille un matériel, a la selection, le textbox.text est servi par un

    me.textbox1.text = "toto"

    et je voudrais à ce moment la faire comme si l'utilisateur avait tapé la touche entrée ou la touche, tab

    Merci

    Cordialement

    eric

    lundi 23 avril 2012 10:17
  • Bonjour,

    Dans ce cas, essayez d'utiliser la classe SendKeys : http://msdn.microsoft.com/fr-fr/library/system.windows.forms.sendkeys.send(v=vs.80).aspx et en particulier la méthode Send().

    Si c'est pour changer le focus, utilisez la méthode Select() sur le contrôle que vous voulez sélectionner : http://msdn.microsoft.com/fr-fr/library/7wt11hea.aspx

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 23 avril 2012 12:38
    Modérateur
  • Merci beaucoup Gilles,

    Cela fonctionne

    Toutefois, je me demande comment appelle t on une méthode d'un objet alors que le cursor est positionné sur un autre objet

    Merci en tous cas

    Cordialement

    eric

    lundi 23 avril 2012 12:52
  • Bonjour,

    Tout simple : "votreObject.Select()". Par exemple, "monTextBox.Select()".
    Est-ce que cela répond à votre question ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 23 avril 2012 13:31
    Modérateur
  • pardon, je me suis mal fait comprendre

    si mon cursor est sur mon texbox2 et que je souhaite executer le code qui se trouve dans l'évenement textbox1.mousemouve par exemple,

    comment dans le textbox2.validating  appeler le textbox1.mouvemouve ?

    Cordialement

    Eric

    lundi 23 avril 2012 13:56
  • Bonjour,

    Le plus simple et le plus propre est de créer une méthode privée qui peut-être appelée par vos événements Validating et MouseMove :

        Private Sub TextBox1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
            Me.Traitement()
        End Sub
    
        Private Sub TextBox2_Validating(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
            Me.Traitement()
        End Sub
    
        Private Sub Traitement()
            ' Traitement à effectuer
        End Sub

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mardi 24 avril 2012 07:16
    Modérateur
  • Merci beaucoup

    C'est effectivement la solution que j'ai adopté.

    Cordialement

    Eric

    mardi 24 avril 2012 13:28