2016-08-11 6 views
-2

пытаюсь показать результат цикла foreach в текстовом поле. если это консольное приложение, я мог бы легко сделать это Console.WriteLine ("{0}" "{1}" "{2}", 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:

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

+= оператор строк занимает левую сторону, добавляет правую сторону и присвоить новое значение в левую сторону.
string.Format также вызывается из Console.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.AppendFormat сделать то же самое, как string.Format, но добавляет, что результат с разрывом строки к StringBuilder -instance, который может быть преобразован в строку с помощью вызова ToString().

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

Edit: Я просто заметил, что часть о этом в цикле Еогеасп, что означает, что вы, вероятно, хотите, чтобы ваш TextBox показать результаты от каждой строки, а не только от последних. В этом случае используйте +=, как предлагает @Koopakiller, и не забудьте указать \r\n в конце строки.

+0

спасибо @ adv12 – ambrose

Смежные вопросы