チェックボックスを実行ボタンのひとつ前に追加すると、フォーカス移動が正しく行われない。
その場合はダミー項目をチェックボックスと実行ボタンの間に配置して回避する必要がある。
→チェックボックスのプロパティのCausesValidationをTrueに変えてあげれば、通常のコントロール同様に
カーソルIN/OUTのタイミングでフレームワークに沿った挙動をとるようになる
■例 フジクラ様 プロジェクト発注処理(A50050_00 EntryForm.vb)■
Private Function DoCheckControlMoveIn_dummy1(ByVal args As CheckMethodArgs) As Boolean
'チェックボックス⇔実行ボタン フォーカス移動用
'※実行ボタンから↑、Shift+Tagキー押下時のチェックボックスコントロールへのフォーカス移動、
' または、チェックボックス以外のコントロールからの実行ボタンからEnter、Tab、↓キー押下時の実行ボタンへのフォーカス移動
' (チェックボックスコントロールからの実行ボタンからEnter、Tab、↓キー押下時の実行ボタンへのフォーカス移動は、
' ここで制御できないため、dummy1のEnterイベントで別途制御
Dim nextControl As Control
If args.移動方向 = CheckMethodArgs.移動方向型.後へ Then
nextControl = _focusSwitcher.GetNextControl(dummy1)
Return DoCheckControlMoveIn_ErrorFocusMove(args, nextControl)
ElseIf args.移動方向 = CheckMethodArgs.移動方向型.前へ Then
nextControl = _focusSwitcher.GetPrevControl(dummy1)
Return DoCheckControlMoveIn_ErrorFocusMove(args, nextControl)
End If
Return True
End Function
Private Sub dummy1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dummy1.Enter
'チェックボックスコントロール(asHenkobun、sendMail)からEnterまたはTabキー押下で移動した場合、
'DoCheckControlMoveIn_dummy1が実行しないため、強制的に更新ボタンへカーソルを移動させる
execute.Focus()
End Sub
コメント
最新を表示する
NG表示方式
NGID一覧