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 :

Obtenir le numéro du contrôle que l'on quitte.


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut Obtenir le numéro du contrôle que l'on quitte.
    Bonjour à tous.

    Je vais essayer d’être bref:

    j'ai ce code :

    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
     Dim tet As New List(Of TextBox)
        Dim num_tb As Integer = 0
     
        Private Sub Page_Exercices_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    tet.Add(New TextBox)
            Me.Controls.Add(tet(0))
    For i As Integer = 0 To tet.Count - 1
                AddHandler tet(i).LostFocus, AddressOf test
            Next
    end sub
     
    Private Sub BT_enversinté_Click(sender As Object, e As EventArgs) Handles BT_enversinté.Click
            tet(num_tb).Text = tet(num_tb).Text & "¿"
        End Sub
     
        Private Sub BT_Inté_Click(sender As Object, e As EventArgs) Handles BT_Inté.Click
            tet(num_tb).Text = tet(num_tb).Text & "?"
        End Sub
     
        Private Sub BT_enversexclam_Click(sender As Object, e As EventArgs) Handles BT_enversexclam.Click
            tet(num_tb).Text = tet(num_tb).Text & "¡"
        End Sub
     
        Private Sub BT_exclam_Click(sender As Object, e As EventArgs) Handles BT_exclam.Click
            tet(num_tb).Text = tet(num_tb).Text & "!"
        End Sub
     
        Private Sub test()
     
          'num_tb = numéro textbox tet() lostfocus
     
        End Sub
    C'est qu'une petite partie.
    J'aimerais pouvoir récuperer le numéro (i) de text box "tet" dans ma procédure test.

    En gros je vais avoir plusieurs textbox (nommées "tet(i)" ici) et j'ailerais, l'orsque je "lostfocus" enregistrer le numéro de ma textbox dans ma variable num_tb.
    Pour pouvoir, lorsque je clique sur mes boutons écrire la valeur du bouton dans la textbox en question !
    Voila merci par avance !

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    franchement, j'entrave que dalle à ta demande, reformule STP

    Citation Envoyé par Jeano81 Voir le message
    Pour pouvoir, lorsque je clique sur mes boutons écrire la valeur du bouton dans la textbox en question !
    Si c'est pour un traitement en fonction d'une information associée au bouton sur lequel tu clicques, je vois pas pourquoi tu veux enregistrer quoi que ce soit sur un LostFocus.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    En fait j'ai une fenêtre avec des textbox (créés dynamiquement donc le nombre varie en fonction des informations que le logiciel reçois) !
    A ces textbox je leur ajoute un addhandler pour récupérer LA textbox qui pers le focus quand l'utilisateur viendra cliquer sur un bouton !
    Les boutons sont en fait des caractères spéciaux (style point d’interrogation à l’envers, où autre, c'est sans importance, ils contiennent des caractères).
    Quand l'utilisateur clique sur un bouton, je veux que ça regarde sur quelle textbox il était et ajoute à celle ci le caractère présent sur le bouton cliqué !
    Voila pourquoi j'utilise le LostFocus, pour récupérer quelle textbox était focus avant de cliquer sur un bouton pour ajouter LE caractère à LA textbox dans laquelle on était en trin d'écrire !
    D’où mon code en fait !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 12
    Points
    12
    Par défaut
    Pour faire ça en fait faut que tu mémorises la dernière textBox qui a eu le focus.

    Tu peux faire une variable globale que tu déclare en tant que textbox.
    Ensuite lorsque tu perds le focus de d'un TB tu assigne ta textbox a ta variable.

    J'ai fait un petit code de test pour que tu puisses mieux comprendre

    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
    Public Class Form1
     
        Dim tblast As TextBox ' ici la variable globale quio contiendra ta dernière textbox visitée
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
        End Sub
     
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus
            tblast = TextBox1 ' donne la textbox à la variable global lors de la perte du focus
        End Sub
     
        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.LostFocus
            tblast = TextBox2 ' donne la textbox à la variable global lors de la perte du focus
        End Sub
     
        Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.LostFocus
            tblast = TextBox3 ' donne la textbox à la variable global lors de la perte du focus
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            tblast.Text += Button1.Text ' ajoute la caractère contenu dans le bouton à la dernière textbox qui a perdu le focus
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            tblast.Text += Button2.Text ' ajoute la caractère contenu dans le bouton à la dernière textbox qui a perdu le focus
        End Sub
    End Class
    En espérant que ça puisse t'aider

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Oki, alors il faut simplement enregistrer une référence sur ladite TextBox via, par exemple, une variable globale.
    Par contre c'est pas sur le Leave (événement plus générique que LostFocus) qu'il faut faire cet enregistrement, mais sur le Enter (ou GotFocus).
    La raison est simple et tiens en deux points :
    - la référence à ta TextBox "courrante" ne sera écrasée qu'en entrant dans une autre TextBox, donc pas de souci sur le click des boutons,
    - si tu enregistres la référence en quittant ta TextBox ... pour une autre TextBox, alors ta référence ne sera pas la bonne.
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Tout d'abord merci pour vos réponses Cela dit, j'ai toujours un souci :
    Si je comprends bien, mon code deviens ceci :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Dim tet As New List(Of TextBox)
        Dim num_tb As TextBox
     
    Private Sub Page_Exercices_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            tet.Add(New TextBox)
            Me.Controls.Add(tet(0))
            tet(0).Visible = True
            tet(0).Location = New Point(500, 50)
     
            For i As Integer = 0 To tet.Count - 1
                AddHandler tet(i).GotFocus, AddressOf test
            Next
     
        End Sub
     
    Private Sub BT_á_Click(sender As Object, e As EventArgs) Handles BT_á.Click
            num_tb.Text += BT_á.Text
        End Sub
     
        Private Sub BT_é_Click(sender As Object, e As EventArgs) Handles BT_é.Click
            num_tb.Text += BT_é.Text
        End Sub
     
        Private Sub BT_í_Click(sender As Object, e As EventArgs) Handles BT_í.Click
            num_tb.Text += BT_í.Text
        End Sub
     
        Private Sub BT_ó_Click(sender As Object, e As EventArgs) Handles BT_ó.Click
            num_tb.Text += BT_ó.Text
        End Sub
     
        Private Sub BT_ú_Click(sender As Object, e As EventArgs) Handles BT_ú.Click
            num_tb.Text += BT_ú.Text
        End Sub
     
        Private Sub BT_ñ_Click(sender As Object, e As EventArgs) Handles BT_ñ.Click
            num_tb.Text += BT_ñ.Text
        End Sub
     
        Private Sub BT_enversinté_Click(sender As Object, e As EventArgs) Handles BT_enversinté.Click
            num_tb.Text += BT_enversinté.Text
        End Sub
     
        Private Sub BT_Inté_Click(sender As Object, e As EventArgs) Handles BT_Inté.Click
            num_tb.Text += BT_Inté.Text
        End Sub
     
        Private Sub BT_enversexclam_Click(sender As Object, e As EventArgs) Handles BT_enversexclam.Click
            num_tb.Text += BT_enversexclam.Text
        End Sub
     
        Private Sub BT_exclam_Click(sender As Object, e As EventArgs) Handles BT_exclam.Click
            num_tb.Text += BT_exclam.Text
        End Sub
     
        Private Sub test()
     
     
     
        End Sub
    Mais dans ma procédure "test" je dois mettre quoi ?
    vu qu'un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub test()
     
        num_tb = tet
     
        End Sub
    ne fonctionne pas :/

    Ps : mon code n'est pas fini pour l'exemple je vous donne un code qui ne crée qu'une seule textbox mais j'aurais bien plusieurs textbox de créées !

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Je comprends pas bien le VB mais elle est où la fonction associée aux events de tes TextBox ?
    En C# tu aurais un truc comac :
    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
    // mon attribut pour conserver la TextBox courante
    private TextBox currentTextBox = null;
     
    // mon Form Load où je crée mes TextBox dynamiquement
    private void frmTest_Load(object sender, EventArgs e) {
    	for (int i = 0; i < 5; i++) {
    		TextBox txt = new TextBox();
    		// 2-3 attributs pour les positionner
    		txt.Name = "txt" + i;
    		txt.Text = txt.Name;
    		txt.Width = 50;
    		txt.Height = 50;
    		txt.Top = 10;
    		txt.Left = 10 + i * 52;
    		// j'ajoute mon handler sur l'event Enter
    		txt.Enter += new EventHandler(txt_Enter);
    		// je l'incruste dans ma Form
    		this.Controls.Add(txt);
    	}
    }
     
    // le handler associé à l'event Enter de chaque TextBox
    void txt_Enter(object sender, EventArgs e) {
    	// on conserve sa référence dans l'attribut de la classe
    	this.currentTextBox = (TextBox)sender;
    }
     
    // un exemple d'utilisation avec un bouton qui écrit 'test' dans la TextBox courante
    private void btnTest_Click(object sender, EventArgs e) {
    	if (this.currentTextBox != null)
    		this.currentTextBox.Text = "test";
    }
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Et moi je ne comprends pas dutout le C# xD (enfin je ne me suis pas penché sur ce langage encore !)

    la fonction associée aux évent c'est le addhandler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For i As Integer = 0 To tet.Count - 1
                AddHandler tet(i).GotFocus, AddressOf test
            Next
    en gros je dis à tous les "tet" (textbox) qui sont créé, quand ils ont le focus (que ce soit le tet N°1 ou 2 ou X) d'exécuter la procédure "test" !

  9. #9
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Ta fonction Test ne devrait-elle pas être prototypée avec les paramètres object sender et EventArgs e ?
    Sinon comment récupérer la TextBox qui lève cet event ? (le param sender).

    Dans mon code ça correspondrait à ma fonction txt_Enter, où je récupère la référence de la TextBox appelante (sender) que je cast (en mettant (TextBox) devant) et que j'enregistre dans mon attribut de classe (this.currentTextBox). Ainsi quand je clique sur un bouton quelconque (dans mon exemple la fonction btnTest_Click correspond au handler de l'event click d'un bouton) je peux avoir accès à la TextBox "courante" via cet attribut et je peux lui faire ce que je veux (dans mon exemple, y écrire "test").
    Plus je connais de langages, plus j'aime le C.

  10. #10
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Arf oui effectivement ça fonctionne avec --' j'avais commencé par le mettre mais dans le addhandler comme il ne faut pas ajouter les parenthèses je l'avais supprimé --' merci beaucoup à vous !!!!

  11. #11
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    De rien, bon dev
    Plus je connais de langages, plus j'aime le C.

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

Discussions similaires

  1. [VB.NET] Obtenir le numéro de la semaine d'une date
    Par alain&&thomas dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/09/2009, 17h54
  2. [MySQL] obtenir dernier numéro incrémenté
    Par Mitaka dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/01/2006, 14h16
  3. Réponses: 17
    Dernier message: 21/12/2005, 00h35
  4. Comment obtenir le numéro de série d'un disque dur?
    Par walidrachid dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/09/2005, 15h59
  5. [TMemo] Obtenir le numéro de la ligne
    Par JFM dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2005, 20h06

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