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

Windows Forms Discussion :

[VB.NET] Déclenchement d'évènement d'un TextBox


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut [VB.NET] Déclenchement d'évènement d'un TextBox
    Bonjour,

    Je voudrais savoir s'il est possible de déclencher l'évènement KeyDown d'un TextBox à partir d'un code ?

    Merci de vos réponses ...

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    elle est bizarre ta question, Keydown comme tu dit est un evenement (relachement d'une touche du clavier),

    donc la seule chose qui peut declencher Keydown d'un textbox c'est que l'utilisateur relache une touche du clavier qd le curseur est dans le textebox.

    Enfin je pense ...

  3. #3
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Je vois ce qu'il veut dire.

    Avoir un code pour l'événement que l'on pourrait exécuter dans une autre fonction...

    Ce qu'il est possible de faire c'est ceci:

    Fonction de traitement
    Evenement qui appelle ta fonction
    Fonction qui appelle ta premiere fonction

    Donc en gros sortir le code de traitement de ton événement

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut
    Excusez moi d'avoir mit du temps à répondre ... pb avec Internet.

    Donc c'est pas tout à fait ce que je veux faire Ditch. En fait, je voudrais que lorsque l'évènement se déclenche sur une zone de texte 1, je voudrais l'appliquer également sur la zone de texte 2. Je sais que l'on peut récupérer la touche appuyée mais le problème est de gérer les conséquences des touches spéciales ...

    Si vous avez une idée ... merci

  5. #5
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Justement. Tu sais que tu as deux TextBox. Quand tu fais un traitement sur un, tu en fais un autre (ou le meme) sur l'autre.

    Exemple:
    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
    Sub Tb1_Evt
    Call Ev1
    Call Ev2
    End Sub
     
    Sub Tb2_Evt
    Call Ev1
    Call Ev2
    End Sub
    ' Evidemment pr faire ca, attends assez le clic à la mm méthode puisque ca fait EXACTEMENT la mm chose. De plus il est possible de récuperer l'origine si plusieurs controles sont associes à la mm méthode.
     
    Sub Ev1
    ' Traitement sur ton Tb1
    End Sub
     
    Sub Ev2
    ' Traitement sur ton Tb2
    End Sub
    En tres gros. C'est tjs pas ca?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut
    Mais en fait, je ne fais aucun traitement dans mon évènement ... ou du moins le seul traitement effectué est celui du contrôle (modification du texte ou de la sélection selon la touche sur laquelle tu appuies).

    Ce que je veux c'est que le changement appliqué sur une textBox lors de l'appui d'une touche s'effectue aussi sur une autre TextBox. Le texte des textBox peuvent être (je dirais meme sont) différents.

    Par exemple : j'ai deux TextBox 1 et 2.
    TextBox1 contient "Bonjour" et le début de la sélection est à la fin de la chaine.
    TextBox2 contient "AuRevoir" et le début de la sélection est au début.
    Supposons que TextBox1 a le Focus ... le fait d'appuyer sur 'E' ...
    TextBox1 = 'Bonjoure' et j'aimerais que TextBox2 soit égal à 'eAuRevoir'.

    Ca parait simple avec seulement le traitement des lettres mais le problème, c'est toutes les touches spéciales ...

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Bon ce n'est pas tout à fait ce que tu veux mais ça devrait t'aider.
    Je viens de finir cet exemple pour la future FAQ

    toutes les touches tapées sur textBox1 sont repercutées sur le contenu de textBox2.

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
            // KeyPress Handler
            private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
            {
    	        // On affiche tous les caractères imprimables
    	        if (!char.IsControl(e.KeyChar))
    		        textBox2.Text = textBox1.Text.Substring(0, textBox1.SelectionStart) +
    					            e.KeyChar.ToString() +
    					            textBox1.Text.Substring(textBox1.SelectionStart + textBox1.SelectionLength);
            }
     
            // KeyDown Handler
            private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
            {
    	        // Gestion Touche Back
    	        if (e.KeyCode == Keys.Back && textBox1.Text.Length > 0)
    	        {
    		        if (textBox1.SelectionLength > 0)
    		        {
    			        // Suppression selection
    			        textBox2.Text = textBox1.Text.Substring(0, textBox1.SelectionStart) + 
    						            textBox1.Text.Substring(textBox1.SelectionStart + textBox1.SelectionLength);
    		        }
    		        else if (textBox1.SelectionStart > 0)
    		        {
    			        // Supression caractère précédant le curseur
    			        if (textBox1.SelectionStart == textBox1.Text.Length)
    				        textBox2.Text = textBox1.Text.Substring(0, textBox1.Text.Length-1);
    			        else
    				        textBox2.Text = textBox1.Text.Substring(0, textBox1.SelectionStart-1) + 
    							            textBox1.Text.Substring(textBox1.SelectionStart + textBox1.SelectionLength);
    		        }
    	        }
    	        // Touche Delete (suppr)
    	        else if (e.KeyCode == Keys.Delete &&  textBox1.Text.Length > 0)
    	        {
    		        // Le curseur est en fin de chaine
    		        if (textBox1.SelectionStart == textBox1.Text.Length)
    		        {
    			        // Supression dernier caratère par Shift+Del
    			        if (e.Shift) 
    				        textBox2.Text = textBox1.Text.Substring(0, textBox1.Text.Length-1);
    		        }
    		        else
    		        {
    			        // On prend tout les caractères à gauche du curseur
    			        textBox2.Text = textBox1.Text.Substring(0, textBox1.SelectionStart);
     
    			        if (textBox1.SelectionLength != 0)
    				        // Suppression de la selection
    				        textBox2.AppendText(textBox1.Text.Substring(textBox1.SelectionStart + textBox1.SelectionLength));
    			        else
    			        {
                            // Si la touche control est enfoncée, tous les caractères
    				        // à droite du curseur seront supprimés. Sinon on en supprime
    				        // un seul
    				        if (!e.Control)
    					        textBox2.Text = textBox1.Text.Substring(0, textBox1.SelectionStart) +
    									        textBox1.Text.Substring(textBox1.SelectionStart+1);
    			        }
    		        }
    	        }
    	        // Coller (Ctrl+V) ou (Shift+insert).
    	        else if ((e.Shift && e.KeyCode == Keys.Insert) || (e.Control && e.KeyCode == Keys.V))
    	        {
    		        // Données dans presse papier
    		        IDataObject cpdata = Clipboard.GetDataObject();
    		        // Test si cpdata contient du texte
    		        if (cpdata != null && cpdata.GetDataPresent(string.Empty.GetType()))
    		        {				
    			        string data = cpdata.GetData(string.Empty.GetType()).ToString();
    			        bool print = false;
    			        // Gestion caractère non imprimables (comme les tabulations par exemple)
    			        for (int i=0; i<data.Length-1; i++)
    			        {
    				        if (char.IsControl(data, i) && print)
    				        {
    					        data = data.Substring(0, i);
    					        break;
    				        }
    				        else if (!char.IsControl(data, i) && !print)
    					        print = true;
    			        }
    			        textBox2.Text = textBox1.Text.Substring(0, textBox1.SelectionStart) +
    			            	        data + 
    						            textBox1.Text.Substring(textBox1.SelectionStart + textBox1.SelectionLength);					
    		        }
    	        }
            }

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut
    Merci pour ton code abelman.
    Je pense aussi que je vais pouvoir avancer. Bien sur, si quelqu'un a une solution plus simple .... je suis toujours preneur.

  9. #9
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    comment ça ?
    pas simple mon code ???

  10. #10
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Citation Envoyé par abelman
    comment ça ?
    pas simple mon code ???
    T'as mis trop de commentaires alors ca a allongé le code

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut
    J'ai pu réaliser ce que je voulais avec ton code. Merci encore ...

  12. #12
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par Ditch
    Citation Envoyé par abelman
    comment ça ?
    pas simple mon code ???
    T'as mis trop de commentaires alors ca a allongé le code
    Tu trouves vraiment qu'il y a trop de commentaires Dictch ?

Discussions similaires

  1. [VB.NET 2005]Problème de déclenchement d'évènements
    Par LTourist dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/07/2006, 16h39
  2. [VB.Net] Bloqué le texte d'un textbox
    Par x dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/07/2005, 14h38
  3. [VB.NET] Utiliser les collections de contrôles (Textbox)
    Par dinbougre dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/01/2005, 18h57
  4. [VB.NET] Remontée d'évènements
    Par bifidus dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/09/2004, 14h25
  5. [VB.NET] Probleme d'affichage entre ListBox/TextBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2004, 11h02

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