投稿日 | : 2003/05/08(Thu) 10:25 |
投稿者 | : よねKEN |
Eメール | : |
URL | : http://www5b.biglobe.ne.jp/~yone-ken/ |
タイトル | : Re^4: textbox1〜10を順に操作したい |
VBのバージョンが明記されていなかったので、VB6.0以前と仮定して回答してました。
VB.NETでは旧VBとは多くの点で異なっており、今回のご質問に対する回答も変わってきます。
無駄なやり取りを避けるためにも、環境(OSやVBのバージョンなど)は明記するようにしましょう。
> なのですが、
> Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
> Dim start_file As New System.IO.StreamReader("c:\memo\Preset.ini", System.Text.Encoding.Default)
> Dim sf_line As String = start_file.ReadLine()
> Dim cnt_tot_1 As Integer
>
> 'Do Until sf_line Is Nothing
> cnt_tot_1 = cnt_tot_1 + 1
> Me.Controls("TextBox" & cnt_tot_1).Text = sf_line
> sf_line = start_file.ReadLine()
> 'Loop
> start_file.Close()
> End Sub
> で
> 「文字列 "TextBox1" から型 'Integer' へのキャストが有効ではありません。」
> のエラーがでてしまいます。これはなぜでしょうか?
.NETのControlsコレクションに名前で該当オブジェクトを引く機能はありません。
また、コントロール配列もありません。
Classの先頭の方に、
Private textBoxes() As TextBox
のような配列変数を宣言しておき、
Form_Loadイベントの先頭で、
textBoxes = New TextBox(){ textBox1, textBox2, textBox3, textBox4, ・・・ , textBox10}
(上で、「・・・」と記述しているところは、長くなるので省略しているだけです。)
のように記述しておき、textBox1〜textBox10を参照したい場合は、
textBoxes(0)〜textBoxes(9)という形で配列として扱いましょう。