C sharp - Comparar Textbox agregados en tiempo de ejecución.

   
Vista:

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Joe (7 intervenciones) el 04/04/2016 23:52:34
Hola a todos, quisiera saber como puedo comparar textbox agregados en tiempo de ejecución, por ejemplo

Si con un botón agrego "x" cantidad de textboxt en un formulario, como le puedo hacer para saber si el texto que escriba el usuario en el primer textbox ingresado en tiempo de ejecución, es igual al texto que escriba en el segundo textbox.

Cualquier duda que tengan acerca de la pregunta por favor hagan mela saber, gracias de antemano.

Saludos..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ariel

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Ariel (8 intervenciones) el 05/04/2016 04:47:04
Bueno es sencillo, supongo que a la hora de crear los textBox, tienes un objeto como de tipo List<textBox> que almacena los textBox mostrados asi puedes indexar cada textBox. Ademas si deseas agregarle eventos independientes a cada textBox en el evento debe de aparecer algo como esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
List<textBox> listTextBox = new List<textBox>(); //esta es tu lista
 
//con el evento click los vas agregando y cada vez le agregas el evento creado (TextBoxHandle)
 
botones1[i].KeyPress+= new EventHandler(MostrarProductosDePedidos);
 
    private void TextBoxHandle(object sender, EventArgs eventArgs)
        {
            for (int i = 0; i < listTextBox.count() ; i++)
            {
 
                if (listTextBox [i].Focused)
                {
                   //Codigo para manipular cada botón
                }
            }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Joe (7 intervenciones) el 07/04/2016 20:25:45
Hola Ariel, Disculpa pero no entendí muy bien tu respuesta.

Mira, esta es la forma en que agrego los textbox..

1
2
3
4
5
6
7
8
int r=10;
 
 for (int a = 1; a <= r; a++)
            {
                TextBox textbox = new TextBox();
                this.Controls.Add(textbox);
 
              }

El código mostrado se genera mediante un botón, se muestra una fila con 5 textbox y a un costado otra fila con los otros 5 textbox,
lo que quiero lograr es comparar si el texto agregado en la primera fila de textbox es igual al de la segunda fila.
Pero no logro comparar los textbox entre si.
Agradecería tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ariel

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Ariel (8 intervenciones) el 08/04/2016 14:09:56
Bueno de la forma que lo estas haciendo tienes que hacer es indexar los Controles de esta forma;

1
this.Controls[2].Text = " ";

el unico problema es que la lista de controles empieza desde el primer elemento que agregastes al form, por lo tanto tendras que saber a partir de que numero en la lista de controles agregaras tus textBox.


Existe otra manera mas facil en la cual tu controlas las los objetos creados (textBox) con mas facilidad, por ejemplo:

1
2
3
4
5
6
List<TextBox> lista = new List<TextBox>();
            lista.Add(new TextBox());
            lista[0].Left = 23;
            lista[0].Top = 20;
            lista[0].Parent = this;
            lista[0].Visible = true;

Con este codigo puedes acceder a la propiedad Text, indexando cada textBox en la lista
1
lista[0].Tex= "";
y compara todo lo que quieras...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Joe (7 intervenciones) el 08/04/2016 17:10:12
Hola Ariel, disculpa mi ignorancia, pero lo que no logro entender es como comparo la información de los textbox si aun no lo e creado por ejemplo yo e agregado de la manera en que me explicaste
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int x = 120;
            int y = 84;
            int r = 4;
            for (int a = 1; a <= r; a++)
            {
                List<TextBox> caja = new List<TextBox>();
                caja.Add(new TextBox());
                caja[0].Left = 23;
                caja[0].Top = 20;
                caja[0].Parent = this;
                caja[0].Visible = true;
                caja[0].Text = "";
                caja[0].Location = new Point(x, y);
                y = y + 35;
 
            }

Hasta ahí todo esta bien, los textbox se crean en el formulario y en la posición que los necesito, ahora por ejemplo, el usuario ingresara información en cada uno de ellos y lo que yo quiero lograr es que al dar click en otro botón comparar el texto que se ingreso en los textbox y que marque de alguna manera los textbox que contengan el mismo texto.
No se si me explico muy bien.

Muchas gracias por tu ayuda y disculpa las molestias.

Saludos..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ariel

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Ariel (8 intervenciones) el 09/04/2016 08:14:29
el codigo que te puse es un ejemplo si vas a ponerlos todos de una vez tienes que poner a en vez de 0, pues sino los agregas de uno en uno.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int x = 120;
            int y = 84;
            int r = 4;
            for (int a = 1; a <= r; a++)
            {
                List<TextBox> caja = new List<TextBox>();
                caja.Add(new TextBox());
                caja[a].Left = 23;
                caja[a].Top = 20;
                caja[a].Parent = this;
                caja[a].Visible = true;
                caja[a].Text = "";
                caja[a].Location = new Point(x, y);
                y = y + 35;
 
            }

para comparar el contenido de los textBox, tienes que hacer otro ciclo for, y entonces ir comparando, por ejemplo segun lo que de dices que quieres lograr seria asi....

1
2
3
4
5
6
7
8
9
10
for(int i=0; i< caja.Count;i++)
{
    for(int j=0 ; j< caja.Count;j++)
     {
          if(caja[i].text==caja[j].text) // con esto comparo el valor que tienen los textBox
            {
                   // aqui pones el codigo que desees para cuando el valor sea igual.
             }
     }
}

Con este ciclo comparas el valor de cada texBox con los otros.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Joe (7 intervenciones) el 09/04/2016 20:04:45
Hola Ariel, ya avía intentado poner la variable "a" en caja (caja[a]), pero no agrega ningún textbox y se me presenta el siguiente error mostrado en la imagen.

imagen


Y lo que trato de hacer es usar el siguiente código que me mostraste pero en otro evento distinto, por ejemplo en otro botón
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
	for (int j = 0; j < caja.Count; j++)
	{
		if (caja[i].Text == caja[j].Text) // con esto comparo el valor que tienen los textBox
		{
			// aqui pones el codigo que desees para cuando el valor sea igual.
 
			if(i%2 == 0)
			{
				caja[i].Enabled = false;
			}
		}
	}
}


Es lo que te comentaba que no podía comparar textbox que aun no han sido creados.
Nuevamente disculpas por las molestias.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ariel

Comparar Textbox agregados en tiempo de ejecución.

Publicado por Ariel (8 intervenciones) el 09/04/2016 20:59:19
te da ese error porque el ciclo for, tienes que empesarlo desde cero y no desde 1.


Si el texBox no ha sido creado no puedes comparar porque no existe....

Realmente no se que quieres hacer con este codigo, pues lo que estas preguntando es que los textBox que estan en posiciones pares se inhabiliten....
1
2
3
4
if(i%2 == 0)
                            {
                                caja[i].Enabled = false;
                            }

si me dices que es lo que realmente quieres comparar, porque para lo que estas haciendo no depende para nada del valor del textBox.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar