goo blog サービス終了のお知らせ 

パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

Enterキーでコントロールを移動する方法(Visual Basic 2008)

2009-07-15 10:36:09 | Visual Basic
さて、今日は、生徒さんからの質問を取り上げますよ。

Visual Basicです。

フォームに配置したコントロールは、Tabキーで、移動できるようになっています。(Windowsは、この方法を推奨しています)

しかし、Enterキーでコントロール間を移動したいというのが、生徒さんの要望なのです。

確かに、その気持ちも分かりますよね。



それでは、方法を説明します。


Visual Studio 2008を起動して、任意の名前で新規作成してください。

フォームが表示されたら、テキストボックスを配置します。

今回は、5つ配置しました。

初期設定では、配置順に、Tabキーでコントロール移動が出来ますよ。






さて、それでは、コードを書きます。

各コントロール(今回は、テキストボックス)の KeyPressイベントに記述します。

「押されたキーがEnterキーなら、タブキーが押されたときと同様の処理を行う」
といった内容のコードとなります。


ただ、同じ内容のコードを、今回は、5つのテキストボックスについて記述するのは、面倒なので、少し楽をする方法をご紹介します。



それでは、フォームのタイトルバーをダブルクリックして、コード画面に切り替えます。

表示されたら、以下のようにコードを記述します。


Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles MyBase.Load
        For Each ctl As Control In Me.Controls
            AddHandler ctl.KeyPress, AddressOf Ctl_KeyPress
        Next
    End Sub

    Private Sub Ctl_KeyPress(ByVal sender As System.Object, _
                        ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If e.KeyChar = Chr(Keys.Enter) Then
            SendKeys.SendWait("{Tab}")
            e.Handled = True
        End If
    End Sub

End Class



こんな感じですよ。




簡単に説明すると、フォームのロードイベントに対して、
すべてのコントロールのKeyPressイベントにCtl_KeyPressというサブルーチンを結び付けますよ、という内容です。

そして、Ctl_KeyPressプロシージャの中が、今回のメイン処理となります。


各コントロールのKeyPressイベントに毎回メイン処理の内容を記述するのではなく、
今回のようにすると、記述するコードのボリュームも格段に減りますし、コントロールを追加しても、追加するコードは不要となります。



それでは、F5キーを押して、デバッグしましょう。





入力した後で、Enterキーを押すと、次のコントロールに移動しますね。



それでは、デバッグを終了し、フォームにコントロールを追加してみましょう。

今度は、コンボボックスを追加しました。





F5キーを押して、デバッグします。


すると、コードの追加なしに、ちゃんと、コンボボックスも含めて移動できますね。


もし、特定のコントロールだけ、Enterキーで移動したい場合は、
対象のコントロールのTagプロパティに、任意の文字を設定してください。


そして、ロードイベントのコードに、条件分岐のコードを追加してくださいね。



今日の信州は、暑くなりそうですよ。

だい

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 入力規則を使わないでデータ... | トップ | Windows7 RC レビュー Part-9 »
最新の画像もっと見る

コメントを投稿

Visual Basic」カテゴリの最新記事