10 個の TextBoxes と [OK] ボタンを備えたフォームがあります。OKボタンがクリックされたとき。テキストボックスの値を配列の文字列に保存する必要があります。
誰か助けてくれませんか?
テキストボックスの値を配列の文字列に保存する必要があります。
string[] array = this.Controls.OfType<TextBox>()
.Select(r=> r.Text)
.ToArray();
上記では、TextBox がコンテナー内ではなく、直接上にあると想定しています。Form
複数のコンテナー内にある場合は、すべてのコントロールを再帰的に取得する必要があります。
を必ず含めてくださいusing System.Linq;
。
.Net Framework 3.5 よりも下位のフレームワークを使用している場合。次に、次のような単純な foreach ループを使用できます。
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 以降で動作します)
フォームの直接の子だけでなく、すべてのテキストボックスを取得するには ( this )
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();