Visual Basic.NET - Se puede comprimir este codigo?

 
Vista:

Se puede comprimir este codigo?

Publicado por nay (7 intervenciones) el 14/01/2016 14:34:14
Buenas a todos.

Tengo 10 TextBox en diseño (TextBox1.Text TextBox2.Text TextBox3.Text....asi hasta 10) y uso una variable para pasarle datos y en programacion lo hago asi:

TextBox1.Text = Variable
TextBox2.Text = Variable
TextBox3.Text = Variable
TextBox4.Text = Variable
TextBox5.Text = Variable
TextBox6.Text = Variable
TextBox7.Text = Variable
TextBox8.Text = Variable
TextBox9.Text = Variable
TextBox10.Text = Variable

Hay alguna manera de comprimir ese codigo?

Espero vuestra ayuda, gracias.
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 xve
Val: 45
Ha disminuido su posición en 7 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Se puede comprimir este codigo?

Publicado por xve (100 intervenciones) el 14/01/2016 18:11:30
En .NET no lo he probado nunca... pero en muchos lenguajes funciona... pero prueba así:

1
TextBox1.Text = TextBox2.Text = Variable

Coméntanos, ok?
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

Se puede comprimir este codigo?

Publicado por nay (7 intervenciones) el 14/01/2016 18:30:00
Gracias por contestar, pero eso no funciona.
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 giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Se puede comprimir este codigo?

Publicado por giancarlo (488 intervenciones) el 14/01/2016 19:01:21
puedes usar for each, suponiendo:
1
2
3
textbox1.text=variable1
textbox2.text=variable2
textbox3.text=variable3

cambiamos variable1,2,3.. a variable(x)
entonces variable1=variable(0)

codificando
1
2
3
4
5
6
7
8
dim indice as integer=0
for each ele as control in me.controls
 
if ele.name="textbox"&indice+1=variable(indice)
ele.text=variable(indice)
end if
indice+=1
next

antes del if CREO que tiene que verificar si el tipo de control es textbox, aunque creo que era cuando tenias que usar alguna propiedad que no tiene cualquiera
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

Se puede comprimir este codigo?

Publicado por nay (7 intervenciones) el 15/01/2016 03:32:29
Gracis por contestar, funciona bien como me dijistes, pero hice un apaño, lo hice asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
For Each TEXTO As Control In Me.Controls
 
	If TypeOf (TEXTO) Is TextBox Then
 
		If TEXTO.Name = "TextBox" & Indice Then
 
			TEXTO.Text = VARIABLE
 
		End If
 
	End If
 
Next

Ahora el problema que veo, esque busca desordenado, veo como va pasando el For Each y en vez de encontrar primero TextBox1.Text igual busca primero el (TextBox5.Text TextBox3.Text TextBox2.Text TextBox6.Text y el TextBox1.Text a la quinta de vez de pasar el For Each) pq no busca primero el TextBox1.Text? asi me relentiza la busqueda, eso se puede arreglar de alguna manera? se puede buscar directamnete el TextBox1.Text sin pasar por For Each o buscar por TabIndex o Tag por posicionamiento de los controles para agilizar la busqueda

Espero respuesta y gracias por la ayuda.

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 giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Se puede comprimir este codigo?

Publicado por giancarlo (488 intervenciones) el 15/01/2016 03:59:01
No te olvides de poner la variable en matrices: variable(número) para que puedas usar el índice, como está en el código que te envié, de esa manera no será muy lento

Prueba con me.controls(nombre) quizás se pueda
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

Se puede comprimir este codigo?

Publicado por nay (7 intervenciones) el 15/01/2016 04:09:29
Gracias por contestar, si es verdad lo puse con el indice como dijistes, pero me pasa lo mismo se relentiza, y de la manera que dijistes me.controls(nombre) no lo acepta.
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 giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Se puede comprimir este codigo?

Publicado por giancarlo (488 intervenciones) el 15/01/2016 04:18:42
Me parece que la pc está lenta o quizás tú formulario tenga demasiado controles, los textbox podrías ponerlo dentro de un groupbox entonces pondrías groupbox1.controls en lugar de me.controls, la cantidad de textbox es fija? Haz intentado usar datagridview, listbox o listview quizás?
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

Se puede comprimir este codigo?

Publicado por nay (7 intervenciones) el 15/01/2016 04:24:18
Lo pondre dentro de un groupbox1 haber como se comporta, lo de datagridview, listbox o listview eso no me interesa hacerlo, la verdad esque tengo muchos textbox, pero lo que no entiendo pq hace la busqueda desordenada de los 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
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Se puede comprimir este codigo?

Publicado por giancarlo (488 intervenciones) el 15/01/2016 04:31:43
Fíjate y haz la prueba, en fin.

Porque en desorden? Eso no interesaría si usas un índice, tu evalúas un control y de acuerdo a eso obtienes el índice, no debería ser lento, solo sería si usas doble for, uno para recorrer los controles y otro para buscar las variables.

Me parece que no me has entendido lo del código, así que sería mejor que revises nuevamente el primer codigo que te dije, y si pones el código que estás usando, mucho mejor.

Me parece que los controles salen en desorden porque los haz puesto en desorden, o quizás el orden de tabulacion(no recuerdo la propiedad) está en desorden.
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

Se puede comprimir este codigo?

Publicado por nay (7 intervenciones) el 15/01/2016 18:09:57
Vale ya esta, funcionando perfectamnete, habia que poner Exit For ahora ya no se relentiza

For Each TEXTO As Control In Me.Controls



If TypeOf (TEXTO) Is TextBox Then



If TEXTO.Name = "TextBox" & Indice Then



TEXTO.Text = VARIABLE(Indice)


Exit For


End If



End If



Next

Gracias por la ayuda.

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 giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Se puede comprimir este codigo?

Publicado por giancarlo (488 intervenciones) el 15/01/2016 18:44:02
Lo que hace el código que pones es que al buscar el textbox, sea 1,2,etc le ponga el valor y listo, no continuará, es decir solo modificaria a uno, que vendria ser el primero del indice, es decir:

Me parece que entendí mal, pero si quieres modificar el textbox1, tetextbox2,textbox3, etc. con tu codigo, solo modificaría el primero, pero no los demas, podrias agregar un maximo de controles a modificar, algo asi, pero no te olvides del indice+=1

podrias agregar un maximo de textbox
1
2
3
4
5
6
7
8
9
10
11
dim maximoT as integer=10
For Each TEXTO As Control In Me.Controls
	If indice>maximoT
		exit for
	else if TypeOf (TEXTO) Is TextBox Then
		If TEXTO.Name = "TextBox" & Indice Then
			TEXTO.Text = VARIABLE(Indice)
		End If
	End If
	indice+=1
Next

como te decía, si tu formulario tiene muchos controles aparte del textbox, puedes usar un group box para realizar una busqueda8con el for) mas precisa y corta.
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

Se puede comprimir este codigo?

Publicado por nay (7 intervenciones) el 15/01/2016 18:53:33
Hola, Tienes razon con el groupbox mucho mas rapido hice otra preuba con label y funciona muy bien

1
2
3
4
5
6
7
8
9
10
11
For Each LABELFUERA As Control In GroupBox1.Controls
 
    If LABELFUERA.Name = "LabelFuera" & Cuenta Then
 
         LABELFUERA.Text = NOMBRE
 
         Exit For
 
    End If
 
Next

Gracias, por la ayuda.

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