Skip to content

Visual Basic.NET いろいろなテクニック①

Posted in Visual Basic .NET, プログラム関係, and 技術メモ


コントロール毎にいろいろなテクニックをまとめてみる以外にも使えるテクニックを系統問わずにメモをしておく。
まとまるまで待っていると忘れてしまうために・・・。ww

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■

【フォーカスを移す】

VisualBasic5 or 6系ではフォーカス遷移にSetFocus イベントでカーソルを動かしてきましたが、.NETでは[オブジェクト名].Focus()と表記するようになりました。
日本では昔から業務プログラムにおいて「Enter」キーで次項目へのカーソル移動が一般的なまま文化が進んできています。以前よりはだいぶ言われることは少なくなりましたが、海外でのカーソル遷移に「Tab」キーを利用する考え方は一般的とは言いがたいものがあります。
ブラウザ系の業務アプリが増えて「Tab」での移動はありますが、UI系の業務アプリではまだまだ「Enter」キーの要求は根強い要望です。

そこでEnterキーからフォーカスの遷移のサンプルを記載します。

    Private Sub Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

        '現在アクティブなコントロールを取得する
        Dim c As Control = Me.ActiveControl

        Try

            '受け取ったキーで処理を判別
            Select Case e.KeyValue

                Case Is = Keys.Up, Keys.Left

                    'フォーカスの移動
                    Me.SelectNextControl(ActiveControl, False, True, True, True)

                Case Is = 13, Keys.Right, Keys.Down        '[Enter]or[→]or[↓]を押された

                    'オブジェクト名別の処理分岐
                    Select Case c.Name

                        Case Is = [オブジェクト名]

                        Case Else

                            'フォーカスの移動
                            Me.SelectNextControl(ActiveControl, True, True, True, True)

                    End Select

                Case Is = 112              '[Button_F1]を押された
                    Call Button_F1.PerformClick()


                Case Else

                    strActiveObject = c.Name

            End Select

        Catch ex As Exception

        Finally
            'カーソルを戻す
            Me.Cursor = Cursors.Default

        End Try

    End Sub

このサンプルでは「↓キー」と「→キー」と「Enterキー」を押すと現在フォーカスされているオブジェクトの次のTabIndexを持つオブジェクトにカーソルが遷移されます。また、「↑キー」と「←キー」を押すと現在フォーカスされているオブジェクトの前のTabIndexを持つオブジェクトにカーソルが遷移されます。つまり逆ですね。
これをキーダウンイベント処理からもらえる「Me.ActiveControl」と「e.KeyValue」を利用して押されたキーと現在のフォーカス元を判断して処理を遷移させることで動作を実現できるようにしています。

途中のキーコード=112(F1キー)を押すイベントも記載していますが、このF1を押すことによって、フォーム上のボタンオブジェクトである「Button_F1」をマウスでクリックしたと同じことを実現できるようにしています。

このように業務アプリで使用できそうなものを五月雨に記録しておく。

Be First to Comment

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    CAPTCHA