[ Foro de C# ]

Uso del If en muchos Textbox

24-Mar-2015 05:16
Invitado (Juan Carlos)
4 Respuestas

Hola a todos disculpen la pregunta pero es que nunca he programado soy nuevo en esto quiero saber si el siguiente código se puede aplicar a muchos textbox sin tener que duplicar, este código funciona de la siguiente forma, son puros IF tengo los textbox 1, 2, 3. En el Textbox2  ingreso una cantidad en el 3 se suma y en el 1 se resta según los rangos que se ven en el código, pero este código solo es para un bloque de tres textbox yo tengo más de 50 bloques a los cuales tengo que agregarle la misma lógica mi pregunta es ¿cómo puedo aplicar el mismo código a los demás textbox sin duplicar el mismo código? ya que de hacer así tendría más de 2500 líneas de código espero puedan darme una orientación de ante mano muchas gracias dejo el código para que lo vean

 
private void button1_Click(object sender, EventArgs e)
        {
    // Bloque 1
   if (textBox3.Text == string.Empty)
    {
    MessageBox.Show("No puede dejar el campo (NOMINAL) en blanco");
     }
   if (float.Parse(textBox3.Text) >= 1 && float.Parse(textBox3.Text) <= 305)
     {
          float r = 0;
          r = float.Parse(textBox3.Text) + 13;
          textBox4.Text = r.ToString();
          r = float.Parse(textBox3.Text) - 6;
          textBox2.Text = r.Tostring();
       }
    if (float.Parse(textBox3.Text) >= 306 && float.Parse(textBox3.Text) <= 915)
      {
        float r = 0;
        r = float.Parse(textBox3.Text) + 13;
        textBox4.Text = r.ToString();
         r = float.Parse(textBox3.Text) - 13;
         textBox2.Text = r.Tostring();
        }
   if (float.Parse(textBox3.Text) >= 916 && float.Parse(textBox3.Text) <= 1524)
    {
    float r = 0;
     r = float.Parse(textBox3.Text) + 25;
     textBox4.Text = r.ToString();
      r = float.Parse(textBox3.Text) - 13;
       textBox2.Text = r.Tostring();
     }
  if (float.Parse(textBox3.Text) >= 1525 && float.Parse(textBox3.Text) <= 2540)
            {
                float r = 0;
                r = float.Parse(textBox3.Text) + 25;
                textBox4.Text = r.ToString();
                r = float.Parse(textBox3.Text) - 25;
                textBox2.Text = r.Tostring();
            }
  if (float.Parse(textBox3.Text) >= 2541 && float.Parse(textBox3.Text) <= 5080)
            {
                float r = 0;
                r = float.Parse(textBox3.Text) + 38;
                textBox4.Text = r.ToString();
                r = float.Parse(textBox3.Text) - 38;
                textBox2.Text = r.Tostring();
            }
            if (float.Parse(textBox3.Text) >= 5081)
            {
                float r = 0;
                r = float.Parse(textBox3.Text) + 50;
                textBox4.Text = r.ToString();
                r = float.Parse(textBox3.Text) - 50;
                textBox2.Text = r.Tostring();
            }
            //fin bloque 1
            //Un bloque representa al textbox1-textbox2-textbox3
            //y tengo más de 50 bloques los cuales se convierten en 2653 líneas
 


 


24-Mar-2015 15:45
Nacho Cabanes (+32)

La solución me temo que es un poco avanzada si estás comenzando: no deberías crear los 50 bloques desde el editor visual, sino crear desde código un array que los contuviera, y así podrás analizar todo ese array de forma repetitiva.


25-Mar-2015 03:48
Invitado (Juan Carlos)

OK antes que nada muchas gracias por contestar y solo para preguntar
si no podrias darme un pequeño ejemplo o por donde empesar a investigar GRACIAS!


25-Mar-2015 17:31
Nacho Cabanes (+32)

Podrías crear un TextBox desde código con

 
TextBox textBox1 = new TextBox();
textBox1.ID = "textBox"+i;
textBox1.Text = "Hola!";
form1.Controls.Add(textBox1);
 



(y cambiarías también a mano los valores de las demás propiedades que te interese fijar, típicamente como mínimo la posición).

Si no has manejado arrays, deberías mirar el apartado 4 del curso antes de seguir:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=724

Si ya has manejado arrays, ampliar el ejemplo anterior para usar múltiples TextBox no es demasiado difícil. Sería algo parecido a:

 
TextBox[] tb = new TextBox()[50];
for (int i=0; i<50; i++)
{
    tb[i] = new TextBox();
    tb[i].ID = "textBox1";
    tb[i].Text = "Hola!";
    form1.Controls.Add(tb[i]);
}
 


Está escrito de memoria, no lo he probado, pero se debe acercar bastante a la realidad.  ;-)


26-Mar-2015 05:04
Invitado (JUANCARLOS)

Mil gracias Nacho Cabanes comensare a investigar !






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)