できます。
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
コマンドボタンがそれを持っているとして、フォーカスとは、現在のリストボックスがありません]ボタンをクリックした場合は、バックフォーカスが最後のボックスまたは前1へ行きたいですか?その前のものがユーザによってクリックされたものか、より低い.tabindexのものであれば? –
こんにちはアレックス。私はフォーカスを持っていた最後のボックスの前に戻って行きたいと思うので、2つのコントロールが戻ってきたと思いますか?.tabindexの方が2つ低いです。私はフォーカスを持っていた最後のボックスにフォーカスを与える方法を知っています(コマンドボタンがそれをとる前に)。今、私はそのコントロールからtabindexの下に戻る方法を見つけようとしています... – phan
これを行う唯一の方法は、現在のtabindexを追跡して、先行するものを探すコントロールを列挙することだと思います –