- - PR -
For文で変数を変更するには?
1|2|3|4
次のページへ»
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-02-01 11:48
よろしくお願いします。
VB.NET環境です。 フォームにTextBoxを複数配置してあります。 TextBox0,TextBox1,TextBox2,TextBox3,TextBox4,TextBox5… For文で各TextBoxに違う値を入れたいのですが、変数の指定がうまく行きません。 【ソース】 For i As Integer = 0 To 10 TextBoxi.Text = i Next 上記だとエラーが出てしまいます。 変数の指定の仕方が分かる方ご指導お願いします。 |
|
投稿日時: 2005-02-01 12:23
こんにちは。
下記URLとか参考になるんじゃないかと思います。 http://dobon.net/vb/dotnet/control/buttonarray.html TextBox & "i" .Text みたいな書き方はJavaScriptやVBScriptでは可能 だと思いますが、VBにそんな書き方ありましたっけ?たぶんなかったような。。。 どなたか知ってらっしゃるかもしれませんね。 と、余計ですが、WebアプリかWinアプリか書いてくださいね。 |
|
投稿日時: 2005-02-01 12:34
以下のような書き方でどうでしょうか?
For i As Integer = 0 To 10 Dim txtBox As WebControls.TextBox txtBox = FindControl("TextBox" + CStr(i)) txtBox.text=i Next 動作の検証もしていないんで、動かなかったらごめんなさい |
|
投稿日時: 2005-02-01 13:46
コードを見てちょっと驚きましたが・・。
論理は別として、見た目にやりたいことがわかるので理解できました。 VB(ASP.NET)なら”hiraさん”の方法。 自分では、SE卵さんのような配列の方法が好きですが、 別の方法を提案。。 一端ArryListにTextBoxを全部格納するのはどうでしょう? Dim objArry As New ArrayList objArry.Add(TextBox0) :: objArry.Add(TextBox10) ↑(※TextBox0から順番に全部格納しておく) Dim i As Integer Dim objText as TextBox For i = 0 To objArry.Count - 1 objText = CType(objArry.Item(i), TextBox) If objText.Name = "TextBox" + CStr(i) Then objText.Text=CStr(i) End If Next i とうのはいかがでしょうか? ArryListへの格納順番をランダムに格納するなら、 2重ループで、 Dim i,j As Integer Dim objText as TextBox For i = 0 To objArry.Count - 1 objText = CType(objArry.Item(i), TextBox) For j= 0 to objArry.Count - 1 If objText.Name = "TextBox" + CStr(j) Then objText.Text=CStr(j) End If Next j Next i うーん。 もっときれいで簡単な方法があるような気もしますが・・。 |
|
投稿日時: 2005-02-01 15:27
.NET ってほとんど知らないんだけど、(Array)List じゃなくて (Hash)Map ってないんですか? コントロールの名前を文字列として索引に使えたほうが便利だと思う。そして、それをしてくれるのが、hira さんの書いている FindControl("TextBox" + CStr(i)) なんじゃないのかなあ。
|
|
投稿日時: 2005-02-01 15:50
みさなんありがとうございます。
hiraさんのソースはFindControlでエラーが発生して出来ませんでした。 ほかの方々のやりかたで今挑戦中です。 自分のスキルが追いついてないため解決にはまだ時間がかかると思います。 みさなん本当にありがとうございます。 |
|
投稿日時: 2005-02-01 16:28
”未記入さん”のおっしゃるとおり、ハッシュテーブルの方が使い勝手が良いですね。
もう遅いかも知れないですが、、。。 Dim objHash as New Hashtable Dim objText as TextBox objHash.Add("TextBox0",TextBox0) ::: objHash.Add("TextBox10",TextBox10) For i = 0 To objHash.Count - 1 objText = objHash.Item("TextBox" + i.ToString()) objText.text=i.ToString() Next i |
|
投稿日時: 2005-02-01 16:35
WebのFindControlと同等な関数を自作する、というのを何処かで見た記憶があります。
|
1|2|3|4
次のページへ»