VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/05/08(Thu) 10:25
投稿者よねKEN
Eメール
URLhttp://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)という形で配列として扱いましょう。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -