DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキストボックスの配列の作り方について

環境/言語:[win2000]
分類:[.NET]

いつもお世話になります。

フォーム上にテキストボックスが縦12個(a列)、横2個(b列)並んでいて
これに配列を作りたいと思っています。
a列に入力した文字で、b列のデータを取ってくるようにしたいと思っています。
データの取得はできるのですが、縦12個分同じソースを書くのは良くないと思い
配列を思いついたのですが、とても行き詰っています。
どなたかご教授お願いします。
以下、作成したソースです。

Private id() As TextBox
Private name() As TextBox
Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click

Dim i As Integer
For i = 0 To 11
id(i) = New TextBox
name(i) = New TextBox
id(i).Parent = Me
name(i).Parent = Me
With id(i)
.Left = id(i).Width * i
.Tag = i
End With
With name(i)
.Left = name(i).Width * i
.Tag = 5 + i
End With
AddHandler id(i).TextChanged, AddressOf id_TextChanged
Next


End Sub

Private Sub id_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles id.TextChanged
Dim strcn As String
Dim sql As String
strcn = "DSN=xxx;"
sql = "SELECT * FROM master WHERE id = ?"

Dim cn As New Odbc.OdbcConnection(strcn)
Dim cmd As New Odbc.OdbcCommand(sql, cn)
Dim prm As Odbc.OdbcParameter
Dim i As Integer

prm = cmd.Parameters.Add("@id", Odbc.OdbcType.Text, 20)
prm.Value = id(i).Text

cn.Open()
Dim rdr As Odbc.OdbcDataReader = cmd.ExecuteReader()

Try
While rdr.Read()
name(i).Text = rdr.GetString(1)

End While


Catch ex As Exception
MsgBox(ex.Message)
cn.Close()

End Try

End Sub
> データの取得はできるのですが、縦12個分同じソースを書くのは良くないと思い
> 配列を思いついたのですが、とても行き詰っています。

具体的に、どこで行き詰っている=何が分からないのでしょう?
それを書いてもらわないことには、アドバイスのしようがありません。
■No11903に返信(渋木宏明(ひどり)さんの記事)
>>データの取得はできるのですが、縦12個分同じソースを書くのは良くないと思い
>>配列を思いついたのですが、とても行き詰っています。
>
> 具体的に、どこで行き詰っている=何が分からないのでしょう?
> それを書いてもらわないことには、アドバイスのしようがありません。
>

説明不足で申し訳ございません。
オブジェクト配列を使用すると言う事は分ったのですが
タブページを開いた時に、テキストボックスを作ると言うところ
で行き詰っています。
よろしければご教授お願いいたします。
オブジェクト配列を作るコードを書き直しました。
デバックしても指定のテキストボックスは表示されません・・・。


Dim a(11) As TextBox
Dim b(11) As TextBox
Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click

Dim i As Integer
For i = 0 To 11
a(i) = New TextBox
a(i).Parent = GroupBox

With a(i)
.Left = a(i).Width * i
.Tag = i
End With

AddHandler a(i).TextChanged, AddressOf a_TextChanged
Next


End Sub

デザイナの方では、テキストボックスは表示されていないのですが、
それで良いのでしょうか?
デザイナの方での何か設定(プロパティを触ったり)等は必要でしょうか?
こんにちは、じゃんぬ です。

■No11909に返信(ひろさんの記事)
> オブジェクト配列を作るコードを書き直しました。
> デバックしても指定のテキストボックスは表示されません・・・。

ん? Controls.Add してないような気がします。
TabPage か Form に対して Control.Add してあげてください。

# TabPage が切り替わる時に生成する理由もできたら教えてください。
■No11910に返信(じゃんぬねっとさんの記事)
> こんにちは、じゃんぬ です。
>
> ■No11909に返信(ひろさんの記事)
>>オブジェクト配列を作るコードを書き直しました。
>>デバックしても指定のテキストボックスは表示されません・・・。
>
> ん? Controls.Add してないような気がします。
> TabPage か Form に対して Control.Add してあげてください。
>
> # TabPage が切り替わる時に生成する理由もできたら教えてください。


返信ありがとうございます。
このフォームは4つのタブを作っていて、
このページは2つ目のタブになるので、切り替えた時に生成しようと
思いました。フォームをロードした時に作ったほうが良いのかと
ちょっと思い出していたのですが・・・。
じゃんぬねっとさんいつもありがとうございます。
フォームロ−ドでのテキストボックスの生成できました!!
ありがとうございました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板