投稿時間: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に クリアされてしまいます。
これは、そういうものなのでしょうか? それとも回避する方法があるのでしょうか? ご教授ください。お願いします。
|