C Lampo
C Lampo

Reputation: 81

How do I display the result of a loop on a new line in a text box?

Basically, how do I write a new line in a text box, keeping the existing information as well.

If I have for loop,

For i As Integer = 1 To 10
    Dim result = i
    i = i + 1
    textbox1.text = result
Next

This will display '10' in the textbox. I want it to be like:

1

2

3

4

...

Upvotes: 1

Views: 1832

Answers (3)

Slai
Slai

Reputation: 22866

For i = 1 To 10
    textbox1.AppendText(vbNewLine & i)
Next

Upvotes: 0

NoChance
NoChance

Reputation: 5752

First, your TextBox must allow multiple lines. This is a property of the textbox control that you can set from the designer or from the code. You may want to ensure that a scroll bar is there to scroll in case the height is not large enough.

If you want to set the properties from code, use this code in the Load event of the form.

 ' Set the Multiline property to true.
 textBox1.Multiline = True
 ' Add vertical scroll bars to the TextBox control.
 textBox1.ScrollBars = ScrollBars.Vertical
 ' Change the height of the textbox so that it could accomodate the lines
 TextBox1.Height = 120 

Now, your approach had a major problem in this line:

textbox1.text = result

The way you coded it, every new value of i, would overwrite the old value. What you want to do is to first construct a string, then send the entire string to the TextBox control. This is not required had you been using Console.WriteLine method.

Method 1

Dim s as string
s=""
For i As Integer = 1 To 10      
    s = s & Environment.Newline & i.ToString() 'we use Environment.NewLine to force new line
Next i
textbox1.text = s

Method 2

.NET offers a class to handle strings better than the way we did before. It won't matter in your case but it is the efficient way to handle concatenation when volume is large and/or performance matters

Dim s as new System.Text.StringBuilder() 'Initialize stringbuilder instance
For i As Integer = 1 To 10  
 s.AppendLine (i.ToString()) 'We use stringbuilder to concat. and inser line feed   
Next i
textbox1.text = s.ToString()

Note: If you want double spacing then you need to add a linefeed (using & ) to both of the above methods.

Upvotes: 4

Jason
Jason

Reputation: 186

Something like this should work:

For i As Integer = 1 To 10
    if i = 1 then
        textbox1.text = i
    else
        textbox1.text &= vbcrlf & i
    end if
Next

Upvotes: 0

Related Questions