チェックボックスを実行ボタンのひとつ前に追加すると、フォーカス移動が正しく行われない。
その場合はダミー項目をチェックボックスと実行ボタンの間に配置して回避する必要がある。
→チェックボックスのプロパティの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一覧