2 Textbox 2 boutons 2 couleurs

2 Textbox 2 boutons 2 couleurs - C#/.NET managed - Programmation

Marsh Posté le 07-10-2015 à 06:03:10    

Salut tout le monde
 
Je suis débutant en C# (j'ai fais un peu de C++ dans le temps ^^) et j'aurais voulu savoir comment faire ceci
 
J'ai deux Textbox (1 et 2) blanche au départ que je voudrais mettre de deux couleurs différentes (vert et rouge) en cliquant sur deux boutons (1 et 2).
 
Le choix de la Textbox (pour le changement de couleur) devrait pouvoir se faire en cliquant une fois la souris dessus.
 
J'ai réussi pour une Textbox mais c'est surtout dans le choix de la Textbox que ça se complique.
 
Pour une Textbox
 

Code :
  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.textBox1.BackColor = System.Drawing.Color.Red;
  4.         }
  5.         private void button2_Click(object sender, EventArgs e)
  6.         {
  7.             this.textBox1.BackColor = System.Drawing.Color.Green;
  8.         }


 
Si quelqu'un peut m'aider merci à lui ou à elle!


Message édité par Bilordi le 07-10-2015 à 06:05:19
Reply

Marsh Posté le 07-10-2015 à 06:03:10   

Reply

Marsh Posté le 08-10-2015 à 04:40:29    

Je sais c'est pas évident ^^. Sinon quelqu'un peut il juste me dire comment sélectionner un textbox je vais essayer de me débrouiller pour le reste.  
 
Merci à vous.

Reply

Marsh Posté le 08-10-2015 à 12:02:21    

Bon, il y a sans doute matière à faire autrement, mais l'idée.
 
Tu te crées une variable privée pour gérer la TextBox sélectionnée
 

Code :
  1. private TextBox selectedTextBox_;


 
Tu ajoutes un événement sur

Code :
  1. GotFocus // ou Enter, à toi de voir quel événement doit lancer le choix de la TextBox

sur tes 2 TextBox, qui appellent une méthode commune
 
 

Code :
  1. textBox1.GotFocus +=OnFocus;
  2. textBox2.GotFocus +=OnFocus;


 
La méthod OnFocus de permet de setter la TextBox sélectionnée.

Code :
  1. private void private void OnFocus(object sender, EventArgs e)
  2. {
  3.    selectedTextBox_ = (TextBox)sender;
  4. }


 
Ensuite, dans tes méthodes onclick, tu n'as qu'à remplacer  

Code :
  1. textBox1


par  

Code :
  1. selectedTextBox_


Message édité par deliriumtremens le 08-10-2015 à 12:06:21
Reply

Marsh Posté le 08-10-2015 à 22:19:48    

Je vais essayer ça je te tiens au courant!  
 
Merci pour la contribution

Reply

Marsh Posté le 09-10-2015 à 04:47:41    

Alors voilà au final le code que j'ai.  
 
 

Code :
  1. private TextBox selectedTextBox_;
  2.         private void OnFocus(object sender, EventArgs e)
  3.         {
  4.             selectedTextBox_ = (TextBox)sender;
  5.         }
  6.         private void textBox1_TextChanged(object sender, EventArgs e)
  7.         {
  8.             textBox1.GotFocus += OnFocus;
  9.         }
  10.         private void textBox2_TextChanged(object sender, EventArgs e)
  11.         {
  12.             textBox2.GotFocus += OnFocus;
  13.         }
  14.         private void button1_Click(object sender, EventArgs e)
  15.         {
  16.             this.selectedTextBox_.BackColor = System.Drawing.Color.Red;
  17.         }
  18.         private void button2_Click(object sender, EventArgs e)
  19.         {
  20.             this.selectedTextBox_.BackColor = System.Drawing.Color.Green;
  21.         }


 
 
Après avoir corrigé des erreurs (syntaxe private void était là deux fois j'avais pas vu et je comprenais pas ^^) quand je lance le débogage je vois bien mes 2 textbox et mes 2 boutons
 
http://img11.hostingpics.net/pics/288163Sanstitre2.jpg
 
je met mon pointeur dans une textbox je clic, et ensuite je reclic sur un bouton mais j'ai ce message
 
http://img11.hostingpics.net/pics/500927Sanstitre1.jpg
 
J'avoue ne pas avoir compris le truc onfocus gotfocus (je comprend le principe mais pas le fonctionnement), si tu pouvais éclairer ma lanterne! ^^


Message édité par Bilordi le 09-10-2015 à 04:51:23
Reply

Marsh Posté le 09-10-2015 à 05:12:30    

Avec Enter au lieu de TextChange je n'ai plus d'erreur, mais rien ne se passe pas de changement de couleur quand je fais entrer et que je clic sur un bouton snif : (
 

Code :
  1. private TextBox selectedTextBox_;
  2.         private void OnFocus(object sender, EventArgs e)
  3.         {
  4.             selectedTextBox_ = (TextBox)sender;
  5.         }
  6.         private void textBox2_Enter(object sender, EventArgs e)
  7.         {
  8.             textBox2.GotFocus += OnFocus;
  9.         }
  10.         private void textBox1_Enter(object sender, EventArgs e)
  11.         {
  12.             textBox1.GotFocus += OnFocus;
  13.         }
  14.         private void button1_Click(object sender, EventArgs e)
  15.         {
  16.             this.selectedTextBox_.BackColor = System.Drawing.Color.Red;
  17.         }
  18.         private void button2_Click(object sender, EventArgs e)
  19.         {
  20.             this.selectedTextBox_.BackColor = System.Drawing.Color.Green;
  21.         }

Reply

Marsh Posté le 09-10-2015 à 09:08:22    

textBox1.GotFocus ne doit pas apparaître dans la méthode textBox1_Enter, hein, l'abonnement aux événements se fait avant !
 
Ton code (là c'est du Winforms que je te donne, je ne sais pas si c'est ce que tu fais, mais le principe sur ces cas reste le même) devrait ressembler à ça.
 
Après, si tu utilise le designer, la partie "Suscribe" pourrait être dans la classe partielle correspondante générée.
 
       

Code :
  1. private TextBox selectedTextBox_;
  2.         public Form1()
  3.         {
  4.             InitializeComponent();
  5.             Suscribe();
  6.            //dans le constructeur, on choisit une des textbox comme "sélectionnée", pour éviter les Null Ref Exception
  7.             selectedTextBox_ = textBox1;
  8.         }
  9.         private void Suscribe()
  10.         {
  11.            //on "abonne" nos textBox à l'événement "enter"
  12.             textBox1.Enter += OnFocus;
  13.             textBox2.Enter += OnFocus;
  14.         }
  15.         private void OnFocus(object sender, EventArgs e)
  16.         {
  17.             selectedTextBox_ = (TextBox)sender;
  18.         }
  19.         private void button1_Click(object sender, EventArgs e)
  20.         {
  21.             selectedTextBox_.BackColor = Color.Red;
  22.         }
  23.         private void button2_Click(object sender, EventArgs e)
  24.         {
  25.             selectedTextBox_.BackColor = Color.Green;
  26.         }


Message édité par deliriumtremens le 09-10-2015 à 09:10:21
Reply

Marsh Posté le 10-10-2015 à 04:11:56    

J'ai recopier exactement le code ça me fait une erreur (en fait deux) sur textbox1 et 2 il me dit ceci
 
http://img11.hostingpics.net/pics/462047Sanstitre1.jpg
 
Edit:
 
Non en fait j'ai plus d'erreur (j'ai effacé et recommencé) j'arrive à lancer le débogage mais rien ne se passe mes box ne changent pas de couleur même si je fais entrer.
 


Message édité par Bilordi le 10-10-2015 à 04:32:24
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed