Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: karlos en 03 de Febrero 2013, 22:35

Título: Semana 7 - Ejercicio5 - For...to curso bases programación I tutorizado online
Publicado por: karlos en 03 de Febrero 2013, 22:35
Hola,

Utilizo visual basic 2010 y estoy intentado obtener lo siguiente:
50
51
...
60

con el siguiente codigo:

Public Class Form1
    Dim i As Integer


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i = 50 To 60
            Label1.Text = i & vbCrLf

        Next
    End Sub
End Class

El resultado que me da es simplemente 60 por lo tanto únicamente refleja el último valor de i.

No entiendo la razón por la que no me registra cada valor de i

Karlos
Título: Re:Semana 7 - Ejercicio5 - For...to
Publicado por: César Krall en 04 de Febrero 2013, 08:26
Puede que se deba a lo siguiente:

For i = 50 To 60
            Label1.Text = i & vbCrLf
Next

Esto el ordenador lo traduce de la siguiente manera:
Para i = 50 hasta 60 hacer
Mostrar en el label1 el valor de i y un salto de línea
Siguiente

Lo que puede estar ocurriendo es que te muestra 50, luego reemplazo el 50 por 51, luego reemplaza el 51 por 52... así hasta que finalmente te muestra 60. El problema es que en cada ocasión reemplaza lo anterior.

Prueba esta solución:

For i = 50 To 60
            Label1.Text = Label1.Text & i & vbCrLf
Next

De esta manera le estarías indicando "muestra el contenido previo, el valor actual de i y un salto de línea". Es decir, tienes que indicar explícitamente que se debe mostrar todo lo que existiera ya anteriormente y además el nuevo valor de i, si no lo indicas explícitamente te reemplaza lo que hubiera en el label.
Título: Re:Semana 7 - Ejercicio5 - For...to
Publicado por: karlos en 05 de Febrero 2013, 09:14
Cesar,

Gracias por la respuesta.

Lo he probado y a funcionado.

Karlos