1

10 個の TextBoxes と [OK] ボタンを備えたフォームがあります。OKボタンがクリックされたとき。テキストボックスの値を配列の文字列に保存する必要があります。

誰か助けてくれませんか?

4

2 に答える 2

6

テキストボックスの値を配列の文字列に保存する必要があります。

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 以降で動作します)

于 2013-05-23T07:13:53.313 に答える
2

フォームの直接の子だけでなく、すべてのテキストボックスを取得するには ( 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();
于 2013-05-23T07:15:56.523 に答える