2016-08-11 7 views
-2

foreachループの結果をテキストボックスに表示しようとしています。コンソールアプリケーションの場合は、これを簡単に行うことができます。 Console.WriteLine( "{0}" "{1}" "{2}"、シリアル、ステート、キャピタル); しかし、そのフォームアプリケーションをWindowsと私はテキストボックスに結果を表示したい。右サイドを追加しループされたオブジェクトをWindowsフォームで表示する方法

displaystates.Text += string.Format("\"{0}\" \"{1}\" \"{2}\" \n", serial, state, capital); 

文字列の+=演算子は、左サイドをとり、左側に新しい値を割り当てる:

List<StatesCapital> stacap = new List<StatesCapital>(); 
      stacap.Add(new StatesCapital { sn = 1, st = "Anambra", ca = "Awka" }); 
      stacap.Add(new StatesCapital { sn = 2, st = "Abia", ca = "Umuahia" }); 
      stacap.Add(new StatesCapital { sn = 3, st = "Bauchi", ca = "Bauchi" }); 

      var std = from s in stacap select s; 

      foreach (var stud in std) 
      { 
       //converting the looped to string 
       string serial = Convert.ToString((stud.sn)); 
       string state = Convert.ToString(stud.st); 
       string capital = Convert.ToString(stud.ca); 

       //now to display the results in a textbox 
       displaystates.Text = ("{0}" "{1}" "{2}", serial, state, capital); 
     } 
+2

これは何が問題なのですか? – Tigran

+1

テキストを置き換える代わりに、追加することができます。 – SLaks

+0

代わりにグリッドを使用してください。 – LarsTech

答えて

0

あなたはあなたのTextBoxにテキストを追加することができます。
string.FormatConsole.WriteLineから呼び出され、渡された書式文字列をその値で書式設定します。
フォーマット文字列の最後に\nがあることに注意してください。これにより改行が追加されます。

すべての行を出力する別の(しばしば高速な)方法は、StringBuilderを使用することです。

var sb = new StringBuilder(); 

//in your loop: add the lines 
sb.AppendFormat(("\"{0}\" \"{1}\" \"{2}\" \n", serial, state, capital); 

//after your loop: output the result to the TextBox: 
displaystates.Text = sb.ToString(); 

StringBuilder.AppendFormatstring.Formatと同じことを行うが、それはToString()を呼び出すことによって文字列に変換することができStringBuilder -instanceに改行となる追加されます。

PS:C#6を使用している場合は、adv12の回答も参照する必要があります。 $ ""の補間された文字列は、string.FormatまたはAppendFormatよりも読みやすくなることがよくあります。

+0

ありがとう@koopkiller – ambrose

0

あなたがC#6で作業している場合は、代わりにこれを試してみてください。

displaystates.Text = $"{serial} {state} {capital}"; 

これはクールな新しい文字列機能、補間された文字列を利用しています。

はそれを行うには、「古いやり方を、」これを試してみてください。

displaystates.Text = string.Format("{0} {1} {2}", serial, state, capital); 

編集:私はちょうどあなたが、おそらく結果を表示するために、あなたのTextBoxをしたい意味foreachループ内にこれをやっに関する部分を、気づきました最も最近のものだけでなく、すべての行から。その場合、@Koopakillerが示唆するように+=を使用し、行の最後に\r\nを忘れないでください。

+0

ありがとう@ adv12 – ambrose

関連する問題