2016-08-15 8 views
0

基本的には、テキストボックスに新しい行を書き込んで、既存の情報を保持する方法を教えてください。 テキストボックスの新しい行にループの結果を表示するにはどうすればよいですか?

私はforループを持っている場合は

は、

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

これは、テキストボックスに '10' が表示されます。私はそれのようになりたい:

...このような

答えて

0

何かが動作するはずです:

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

最初に、TextBoxは複数の行を許可する必要があります。これは、デザイナまたはコードから設定できるテキストボックスコントロールのプロパティです。高さが十分に大きくない場合にスクロールするスクロールバーがあることを確認することができます。

コードからプロパティを設定する場合は、このコードをフォームのLoadイベントで使用します。

textbox1.text = result 

あなたがそれをコード化された方法は、私のすべての新しい値は、古い値を上書きします:

' 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 

今、あなたのアプローチは、この行の主要な問題を抱えていました。あなたがしたいのは、最初に文字列を作成してから、文字列全体をTextBoxコントロールに送信することです。これは、Console.WriteLineメソッドを使用していた場合は必要ありません。

方法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 

方法2

.NETは、我々が以前に行った方法よりも優れた文字列を扱うためのクラスを提供しています。それはあなたのケースでは問題ありませんが、ボリュームが大きい場合には、連結を処理するための効率的な方法であり、および/またはパフォーマンスが

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() 

注意事項:&を使用して、あなたがダブルスペースを望むなら、あなたは改行を追加する必要があります( )を上記の方法の両方に適用する。

+1

Method2 'textbox1.text = s'これはテキストが文字列であり、stringbuilderではないのでコンパイルされません。それはs.tostringする必要があります...多分タイプo? – Codexer

+0

ご意見ありがとうございます。あなたは正しいです。 – NoChance

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

コードに常に説明を追加する – NSNoob

関連する問題