Introducir texto en un Formulario (Visual Basic 2013) (Solucionado)

Iniciado por Tazmania40, 1 Octubre 2015, 14:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Tazmania40

Buenas, llevo unos meses aprendiendo Visual Basic 2013 puesto que era de al antigua escuela de Visual Basic 6 y llevaba años sin programar. Prácticamente estoy recopilando conocimientos y pasando al nuevo VB 2013 porque el código cambia mucho y una de las cosas que con más facilidad hacía con Visual Basic 6 era.

Tenía un Formulario y un botón de comando y escribía dentro del botón

Dim Suma As Integer
Suma = 5 + 15
Print ("La suma es = ", Suma)

y en el Formulario aparecía el texto escrito y el resultado de la suma, sin necesidad de usar un Label o un TextBox. Si volvía a escribir otra línea Print pues debajo y es lo que necesito para mi programa, porque quiero mostrar como 10 operaciones una debajo de otra y no quiero poner 10 TextBox, sino realizarlo con un For..Next como antes hacía, ya que van a ser un total de 8 listados de 10, eso me supone 80 TextBox y no creo que sea un programa correcto (estoy utilizando Formularios MDI).

Asi que lo que quiero es simple, al pulsar un botón que me aparezca en el Formulario principal o bien formulario secundario del MDI, el texto que ponga y la operación (variable). He mirado por internet y dicen utilizar método DrawString pero es bastante lioso y no funcionan los ejemplos (me dan error). Si hay alguna manera fácil o bien un ejemplo con DrawString declarándolo y que funcione para Visual Basic 2013 con el Botón y Formulario solamente; si hay que añadir algo más.

Muchas gracias y espero una solución de algo tan sencillo con VB6 ahora tan complicado con VB2013.

Tazmania40

Escribo código para haceros ver una idea de lo que quiero.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Suma As Integer = 10
        Dim A As Integer
        For A = 1 To 10
            Label1.Text = ("Numero de Operación = " & A.ToString)
        Next A
End Sub

Naturalmente el resultado dará una sola línea, quiero como antes con el método Print que daría 10 líneas y puestas en el Formulario. No quiero Label, ni TextBox, ni emplear Arrays porque no voy a usar variables, son varios listados como si fuera en papel pero mostarlo en el Formulario.

Estoy mirando y creo que tendré que usar el método Drawing que es bastante lioso y para una cosa sencilla tienes que programar varias lineas declarando, quedará más bonito con las fuentes y demás, pero no le veo la práctica de antes a cosas sencillas.

Sigo mirando y si lo consigo lo expongo aqui, pero si alguién sabe una respuesta más acorde con lo que pido se lo agradezco.

Tazmania40

De momento he encontrado una solución y lo tengo resuelto mediante el método Drawing, aunque si alguien conoce alguna otra forma parecida a Print del VB6, porque antes con 2 líneas hacias lo mismo que este código.

Private Sub Contorno_Click(sender As Object, e As EventArgs) Handles Contorno.Click
        Dim Suma As Integer = 10
        Dim A As Integer
        Dim MiGrafico As Graphics = Me.CreateGraphics
        Dim MiFuente As Font
        Dim MiPincel As Brush

        MiPincel = New Drawing.SolidBrush(Color.Blue)
        MiFuente = New System.Drawing.Font("Tahoma", 12, FontStyle.Underline)
        For A = 0 To 9
            MiGrafico.DrawString("Operación " & Suma + A, MiFuente,  MiPincel, 200, 10 + (A * 20))
        Next
End Sub

tincopasan

perdón, la verdad no conozco algún método para lo que buscas, pero, no querés usar varios textbox, está bien, y ¿un listbox?, después te permite otros métodos y propiedades que el form te costará más.

Tazmania40

Al final utilizaré este código y con el evento Paint, es lo que más se asemeja al print de antes. No utilizo etiquetas, ni label puesto que voy a utilizar Formularios MDI y tendría que estar realizando más código y no por diseño, además de que solo van a ser listas al igual que si imprimes. Si fuera un solo Formulario si lo haría.

Código (vbnet) [Seleccionar]
[code=vbnet]

Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        Dim Suma As Integer = 15
        Dim A As Integer
        For A = 0 To 9
            e.Graphics.DrawString("La suma es = " & Suma + A, New Font("Tahoma", 12, _
           FontStyle.Bold), Brushes.Black, New Point(50, 10 + (A * 20)))
        Next A
End Sub
[/code]

Esta es la SOLUCIÓN que veo. Gracias a todos y al foro.