Crear un programa en c# con 9 textbox. Cuando el usuario escriba rojo, verde oazul los textbox deben cambiar de color pero debe realizar un conteo de cadatextbox ósea que si hay 3 texbox rojo debe de hacerme un conteo de esos 3texbox pero si cambio el color debe restarse y sumarle al color por el cual cambié.Hasta ahora esto es lo que tengo.
Una clase llamada Trabajo en cual hice un método llamado Cambiar_Color ya este método le paso 3 parámetros queson el textbox el cual quiero evaluar, y los labels en donde se imprimirá elconteo.
delphi
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Drawing; using System.Windows.Forms; namespace colores { class Trabajo { public void Cambiar_Color(TextBox Nom,Label Lab1,Label Lab2, Label Lab3) { Frm_color form1 = new Frm_color(); String Texto = Nom.Text.ToLower(); String Text_lab1 = Lab1.Text; String Text_lab2 = Lab2.Text; String Text_lab3 = Lab3.Text; Text_lab1 = Text_lab1.Trim(); Text_lab2 = Text_lab2.Trim(); Text_lab3 = Text_lab3.Trim(); int Conteo_rojo; int Conteo_azul; int Conteo_verde; if (Text_lab1.Length == 0 || Text_lab2.Length == 0 || Text_lab3.Length == 0) { Conteo_azul = 0; Conteo_rojo = 0; Conteo_verde = 0; } else { Conteo_azul = int.Parse(Text_lab1); Conteo_rojo = int.Parse(Text_lab2); Conteo_verde = int.Parse(Text_lab3); } switch (Texto) { case "rojo": Nom.BackColor = Color.Red; if (Texto == "rojo" { Conteo_rojo = Conteo_rojo + 1; Lab2.Text = Conteo_rojo.ToString(); } break; case "verde": Nom.BackColor = Color.Green; if (Texto == "verde" { Conteo_verde = Conteo_verde + 1; } Lab3.Text = Conteo_verde.ToString(); break; case "azul": Nom.BackColor = Color.Blue; if (Texto == "azul" { Conteo_azul = Conteo_azul + 1; } Lab1.Text = Conteo_azul.ToString(); break; default: Nom.BackColor = Color.White; break; } } } }
/********************Separador**********************/
Este es el código del formulario.Aquí hice una instancia de la clase Trabajo() y en el evento textchange de los textbox llamo a su método Cambiar_Color() y le paso los parametros correspondientes.
delphi
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace colores { public partial class Frm_color : Form { Trabajo Tra = new Trabajo(); public Frm_color() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void label4_Click(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox1, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox8_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox8, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox5_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox5, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox10_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox10, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox7_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox7, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox4_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox4, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox9_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox9, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox6_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox6, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } private void textBox3_TextChanged(object sender, EventArgs e) { Tra.Cambiar_Color(textBox3, lab_conteo_azul, lab_conteo_rojo, lab_conteo_verde); } } }
/********************Separador**********************/
Y este es el resultado final:
Comor ven hay 3 de cada uno el problema es la resta no se como hacerla ya e intentado de varias formas una de ellas fue recorrer el formulario con un foreach() y donde sean textbox y el backgroundColor cambie que haga un conteo pero creo que lo estoy llamando en el evento equivocado por que al final el contador queda negativo.Si pueden ayudarme se los agradeceria mucho.