2013-05-23 3 views
1

У меня есть форма с 10 текстовыми полями и кнопкой OK. При нажатии кнопки OK. Мне нужно сохранить значения из текстовых полей в строку массива.Сохранять значения текстового поля в массиве в C#

Может кто-нибудь помочь мне, пожалуйста?

+2

Вы попробовали что-нибудь? Пожалуйста, прочитайте [FAQ] и [ask] –

+0

Можете ли вы показать код? Вы знаете, как читать данные из текстового поля, и знаете ли вы, как хранить данные в массиве? – user707727

+0

строка [] list = новый список [9]; list [0] = textbox1.Text; – QKWS

ответ

6

I need to store the values from the textboxes to a string of array.

string[] array = this.Controls.OfType<TextBox>() 
           .Select(r=> r.Text) 
           .ToArray(); 

выше ожидает TextBoxes быть на Form непосредственно, а не внутри контейнера, если они находятся внутри нескольких контейнеров, то вы должны get all the controls recursively.

Обязательно укажите using System.Linq;.

Если вы используете более низкие рамки, чем .Net Framework 3.5. Затем вы можете использовать простой цикл Еогеаспа как:

List<string> list = new List<string>(); 
foreach(Control c in this.Controls) 
{ 
    if(c is TextBox) 
    list.Add((c as TextBox).Text); 
} 

(это будет работать с .NET Framework 2.0 и далее)

+1

Смарт! Мое альтернативное решение состоит в том, чтобы вручную создавать текстовые поля в коде вместо использования конструктора, а затем остальное тривиально. – David

+0

Habib, у меня есть эта ошибка «System.Windows.Forms.Control.ControlCollection» не содержит определения для «OfType» – QKWS

+0

@QKWS, убедитесь, что вы включили 'using System.Linq;' вверху. – Habib

2

Чтобы получить все текстовые поля не только прямой Чайлдс вида (это)

Func<Control, IEnumerable<Control>> allControls = null; 
allControls = c => new Control[] { c }.Concat(c.Controls.Cast<Control>().SelectMany(x => allControls(x))); 

var all = allControls(this).OfType<TextBox>() 
      .Select(t => t.Text) 
      .ToList(); 
Смежные вопросы