【vb2005】 動的に作成されたComboBoxをイベントハンドラへ関連づけする際の問題
おはようございます。
VB5.0を1週間ほどかじって現在2005に乗り換えたばかりのド初心者です。
(用語の使い方などが間違っているかもしれません。おかしなところは指摘していただけるとありがたいです)
実行時に動的(?)に作成されたComboBoxをイベントハンドラへ関連付けようとしているのですが、ClickやLeaveなどで関連づけると正常に動作するのにTextChangedの場合になぜか認識してもらえません。
原因の見当がまったくつかず、困り果てています。
内容は、まずボタンを押すとコンボボックスが2つずつ追加されます。そのコンボボックスのリストを選ぶ際、追加されたふたつが同じものを選んでいると色が変わるようにするものです。
下にそのソースを簡潔にしたサンプルを記述させていただきます。
間違いの指摘や、うまくいかない原因、アドバイスなど頂ければ幸いです。
(formにはButton1というボタンが一つだけあります。)
Dim Index As Integer
Private CBox1() As ComboBox
Private CBox2() As ComboBox
Private Sub CBB_LT_SameErroCheck(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim T As Integer
T = sender.Tag
If CBox1(T).Text = "" Then
Exit Sub
End If
If CBox1(T).Text = CBox2(T).Text Then
CBox1(T).BackColor = Color.Red
CBox2(T).BackColor = Color.Red
Else
CBox1(T).BackColor = Color.White
CBox2(T).BackColor = Color.White
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ReDim Preserve CBox1(Index)
ReDim Preserve CBox2(Index)
SuspendLayout()
CBox1(Index) = New ComboBox
CBox2(Index) = New ComboBox
With CBox1(Index)
.Location = New Point(105, Index * 20)
.Size = New Size(95, 20)
.DropDownStyle = ComboBoxStyle.DropDownList
.Tag = Index
.Items.Add("List1")
.Items.Add("List2")
End With
With CBox2(Index)
.Location = New Point(200, Index * 20)
.Size = New Size(95, 20)
.DropDownStyle = ComboBoxStyle.DropDownList
.Tag = Index
.Items.Add("List1")
.Items.Add("List2")
End With
'AddHandler CBox1(Index).Click, AddressOf CBB_LT_SameErroCheck
'AddHandler CBox2(Index).Click, AddressOf CBB_LT_SameErroCheck
AddHandler CBox1(Index).TextChanged, AddressOf CBB_LT_SameErroCheck
AddHandler CBox2(Index).TextChanged, AddressOf CBB_LT_SameErroCheck
Me.Controls.Add(CBox1(Index))
Me.Controls.Add(CBox2(Index))
ResumeLayout(False)
Index += 1
End Sub