ここではフォーム上にコントロール配列でファンクションキー(F1~F12)ボタンを作成する方法について紹介します。

フォームを作成する

最初に以下のようなファンクションキー(F1~F12)のボダンがあるフォームを作成します。F2キーだけ Enabled を False にしておきます。また、テキストボックスは押されたファンクションキーの名前を表示させるために用意します。


ファンクションキーのコントロール配列を作成する

フォームのロード時にファンクションキーのコントロール配列を作成します。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

    ' フォームでコントロールのキーイベントを受け取る
    Me.KeyPreview = True

    ' コントロール配列にボタンを設定する
    ArrFKey = {Me.F1, Me.F2, Me.F3, Me.F4, Me.F5, Me.F6, Me.F7, Me.F8, Me.F9, Me.F10, Me.F11, Me.F12}

    ' ボタンコントロールのクリックイベント処理を定義する
    For Each btn As Button In ArrFKey
        AddHandler btn.Click, AddressOf ButtonClick
    Next

End Sub


ボタン押下時のイベントを作成する

ボタン押下時のイベントを作成します。フォーム上のボタンをクリックするとテキストボックスに押されたファンクションキーの名前を表示させます。

Private Sub ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)

    ' ボタンのテキストを取得する
    Dim strFKey As String = DirectCast(sender, Button).Text

    TextBox1.Text = String.Format("{0}キーが押されました。", strFKey)

End Sub


フォームのKeyDownイベントを作成する

フォームのKeyDownイベントを作成します。F1~F12キーが押されたらボタンのイベントを発生させます。

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown

    If e.KeyCode >= Keys.F1 AndAlso e.KeyCode <= Keys.F12 Then
        ' ボタンのClickイベントを発生させる
        ArrFKey(e.KeyCode - Keys.F1).PerformClick()
    End If

End Sub


動作を確認する

F1~F12キーを押してもF1~F12ボタンをクリックしても同じイベントが発生して、テキストボックスにファンクションキーの名前が表示されました。F2は Enabled を False にしていますのでイベントは設定しません。


以上、フォーム上にコントロール配列でファンクションキー(F1~F12)ボタンを作成する方法について解説しました。