- - PR -
[ASP.NET : C#] コントロールの動的追加方法
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-23 16:24
そのままはインスタンスに設定させないことの可能性がありますので、コントロールを循環に生み出してみました、少しいよいと思います。
コード -------------------------------------------------------------------------------- protected TextBox[] _textBoxes; protected void addButton(object sender, System.EventArgs e) { if (_textBoxes != null) { return; } _textBoxes = new TextBox[3]; for(int i = 0; i < _textBoxes.Length; i++) { _textBoxes[i] = new TextBox(); _textBoxes[i].ID = "XXXX"; Form1.Controls.Add(_textBoxes[i]); } } -------------------------------------------------------------------------------- そうすれば、どうでしょうか? [ メッセージ編集済み 編集者: 麒麟 様 編集日時 2006-06-23 16:26 ] | ||||||||||||||||||||
|
投稿日時: 2006-06-23 16:36
でしたら 10 固定は、保守性に乏しいのではないでしょうか?
TextBox[] TextBoxes = new TextBox[DataCount + 1]; ではないのでしょうか。
はい、あのコードは、固定的な意味があるものに向いています。 今回の例では、役に立たないコードでしょう。
そもそも、提示されたコード例では、配列を扱う必要も意味もないですよね?
色々と局所的な変数に変えてはいますが、やっていることは同じです。 Form1.Controls へ追加された後、また新たに別のインスタンスを生成しています。 ピンと来なければ、インスタンスとは何であるかをまず調べる必要があります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-06-23 17:09
お世話になっております。
なんか言い訳がましいですが、最初以下のようなコードを書いてみて ボタンをクリックするたびにテキストボックスが増えていくイメージだったんですが、 テキストボックスがひとつのままだったんで、 インスタンス名が同じだと上書きされていっていると考え、 配列ならうまくいくのではないかと思いました。
じゃんぬねっと様のご指摘で考え直してみると、 これだとボタンを押したときのポストバックで画面がリフレッシュされるから、 TextBox の ID が変わるだけで、絶対に一個しかできませんよね...orz
まったくもってその通りです。 申し訳ありませんでしたm(_ _)m [ メッセージ編集済み 編集者: 未記入 編集日時 2006-06-23 17:15 ] |