したがって、スクリプトによって動的に生成され、引数としてプルされるすべての文字列のラベルとテキスト ボックスを持つフォームがあります。ユーザーが各テキスト ボックスに入力してから、[OK] ボタンを選択するようにします。その後、各テキストボックスの各項目を処理したいと思います。以前は、項目が 1 つしかなかったので、テキスト ボックスの値を取得するための非常に単純なプロパティを作成しました。
Public string Text { get { return textbox1.Text; } }
動的な数のテキスト ボックスを使用して、同様にエレガントなことができることを望んでいました。
Public string [] Text { get { return **Each text box text as an array**; } }
私はしばらくそれについて考えてきましたが、これを設定するエレガントな方法が思い浮かびません。フォームにテキストボックスを追加する方法は次のとおりです...
string[] keywords = Environment.GetCommandLineArgs();
int placement = 10;
foreach (string keyword in keywords)
{
if (keyword == keywords[0])
continue;
Label lbl = new Label();
lbl.Text = keyword;
lbl.Top = placement;
this.Controls.Add(lbl);
TextBox txt = new TextBox();
txt.Top = placement;
txt.Left = 100;
this.Controls.Add(txt);
placement += 20;
}
フォームを閉じるときに各テキスト ボックスのテキストをループ処理して、パブリック配列に値を入力することもできますが、もう少し洗練されたものを考え出し、力ずくで物事を行う習慣をやめたいと思います。これを達成する方法のクールなアイデアはありますか? すべてのテキスト ボックスを配列に追加してから、文字列プロパティで指定されたテキスト ボックスのテキストを何らかの方法で取得するか、代わりにテキスト ボックス配列をパブリック プロパティにすることができると考えています。このような書き方はあるのでしょうか...
Public string [] Text { get { return TextBoxArray[**value trying to be gotten**].Text; } }
または、これはプロパティには多すぎて、代わりにメソッドにする必要がありますか? 他のアイデアはありますか?私はそれが少し些細な質問であり、さまざまな方法で解決できることを理解しています.