投稿日 | : 2003/09/11(Thu) 17:52 |
投稿者 | : miya |
Eメール | : |
URL | : |
タイトル | : ユーザーコントロールについて |
環境 Windows98 、VB6(SP4)で作業しています。
ユーザーコントロールについて質問があります。
フォーム内のコンボボックスのListIndexをコード内で設定した場合に、
処理がユーザーコントロールに渡った時点で、ListIndexがクリアされてしまいます。
クリアを回避する方法は、あるでしょうか?
私の説明が、わかりにくいかも知れないので、下記に再現コードを書きます。
事前作業
1.ユーザーコントロールを追加する。
2.ユーザーコントロールにタイマー(Timer1)と
ラベル(lblClock(0),lblClock(1))を貼りつける。
3.Form1にCombo1とLabel1と、ユーザーコントロールを貼りつける。
コード(Form1)
Private Sub Combo1_Change()
Dim i As Integer
If Len(Combo1.Text) = 5 Then
For i = 0 To Combo1.ListCount - 1
If Combo1.List(i) = Combo1.Text Then
Combo1.ListIndex = i
Label1.Caption = i
Exit For
End If
Next i
End If
End Sub
Private Sub Form_Load()
Combo1.AddItem "test1"
Combo1.AddItem "test2"
Combo1.AddItem "test3"
End Sub
コード(ユーザーコントロール)
Private Sub Timer1_Timer()
lblClock(0) = Format(Now, "yyyy/mm/dd")
lblClock(1) = Format(Now, "hh:nn:ss")
Form1.Label1.Caption = Form1.Combo1.ListIndex
End Sub
Private Sub UserControl_Show()
If UserControl.Ambient.UserMode Then
Timer1.Enabled = True
End If
End Sub
分かりやすいように、Label1に現在のListIndexを表示するようにしています。
以上の処理を実行すると、コンボボックスのリストから値を設定した場合には、
ListIndexが変わったままになりますが、
手入力で"test2"と入力した場合、Timerイベントが発生した時点で、ListIndexが-1に
クリアされてしまいます。
これは、そういうものなのでしょうか?
それとも回避する方法があるのでしょうか?
ご教授ください。お願いします。