2012-02-20 5 views
0

私は私のVBフォーム上にリストボックスの束を持っています。私もコマンドボタンを作成しました。VB6で前のコントロールにどのようにサイクルするのですか?

コマンドボタンを押すと、フォーカスを持っている現在のリストボックスから前のリストボックスに移動するようにしたいと思います。これは、TABとSHIFT TABを使用してコントロール間を循環させるのと同じです。 SHIFT TABはこのサイクルで後方に進み、TABはそのサイクルで前方に進みます。私はぼんやりと "タブサイクル"に戻る&に戻る方法があったことを覚えています。

どうすればよいですか?

+0

コマンドボタンがそれを持っているとして、フォーカスとは、現在のリストボックスがありません]ボタンをクリックした場合は、バックフォーカスが最後のボックスまたは前1へ行きたいですか?その前のものがユーザによってクリックされたものか、より低い.tabindexのものであれば? –

+0

こんにちはアレックス。私はフォーカスを持っていた最後のボックスの前に戻って行きたいと思うので、2つのコントロールが戻ってきたと思いますか?.tabindexの方が2つ低いです。私はフォーカスを持っていた最後のボックスにフォーカスを与える方法を知っています(コマンドボタンがそれをとる前に)。今、私はそのコントロールからtabindexの下に戻る方法を見つけようとしています... – phan

+0

これを行う唯一の方法は、現在のtabindexを追跡して、先行するものを探すコントロールを列挙することだと思います –

答えて

1

できます。

Private mCurrentListboxTabIndex As Integer 

'wire up, simpler if you use a control array 
Private Sub List1_GotFocus() 
    mCurrentListboxTabIndex = List1.TabIndex 
End Sub 

Private Sub List2_GotFocus() 
    mCurrentListboxTabIndex = List2.TabIndex 
End Sub 

Private Sub List3_GotFocus() 
    mCurrentListboxTabIndex = List3.TabIndex 
End Sub 

Private Sub btnPrev_Click() 
    FocusListBoxByTabIndex -1 
End Sub 

Private Sub btnNext_Click() 
    FocusListBoxByTabIndex 1 
End Sub 

Private Sub FocusListBoxByTabIndex(offset As Long) 
    Dim ctrl As VB.Control 
    For Each ctrl In Me 
     If TypeOf ctrl Is ListBox Then 
      If ctrl.TabIndex = mCurrentListboxTabIndex + offset Then 
       ctrl.SetFocus 
       Exit Sub 
      End If 
     End If 
    Next 
End Sub 
+0

ありがとうございますアレックスK! – phan

+0

ちょっとアレックス、リストボックスの3番目の項目を選択するにはどうすればいいですか? – phan

関連する問題