それぞれのキーの実行処理
各キーの処理も、イベントハンドラの引数「e」のKeyIndexプロパティの値を使って押されたファンクションキーを識別しますが、3つのスタイルとキーセットを使い分けていますから、変数flagの値を使ってどのキーセットの時のキーなのかを判断して処理を組み立てていきます。
なお、本プログラムはあくまでもGcClassicFunctionKeyの機能を紹介するサンプルプログラムのため、各キーの処理はあくまでも形だけにとどめています。
'各ファンクションキーの処理 一部省略している処理があります Dim fname As String = "" Select Case flag Case 0 'ファイル Select Case e.KeyIndex Case 1 RichTextBox1.Clear() Case (2) If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then fname = OpenFileDialog1.FileName RichTextBox1.LoadFile(fname) End If Case 3 If fname <> "" Then RichTextBox1.SaveFile(fname) End If Case 4 If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then RichTextBox1.LoadFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText) End If Case 5 PageSetupDialog1.PageSettings = New System.Drawing.Printing.PageSettings PageSetupDialog1.ShowDialog() Case 6 PrintDialog1.ShowDialog() Case 7 If MessageBox.Show("終了しますか?", "終了", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = Windows.Forms.DialogResult.OK Then Me.Close() End If End Select Case 1 '編集 Select Case e.KeyIndex Case 1 RichTextBox1.Undo() Case 2 RichTextBox1.Redo() Case 3 RichTextBox1.Cut() Case 4 RichTextBox1.Copy() Case 5 RichTextBox1.Paste() Case 6 RichTextBox1.SelectAll() Case 7 Dim str As String = RichTextBox1.SelectedText RichTextBox1.Find(str, RichTextBoxFinds.MatchCase) End Select Case 2 '書式 Select Case e.KeyIndex Case 1 FontDialog1.ShowDialog() RichTextBox1.SelectionFont = FontDialog1.Font RichTextBox1.SelectionColor = fontcolor Case 2 ColorDialog1.ShowDialog() fontcolor = ColorDialog1.Color RichTextBox1.SelectionColor = fontcolor Case 3 RichTextBox1.SelectionBackColor = Color.Yellow Case 4 RichTextBox1.SelectionBackColor = RichTextBox1.BackColor Case 5 RichTextBox1.SelectionAlignment = HorizontalAlignment.Left Case 6 RichTextBox1.SelectionAlignment = HorizontalAlignment.Center Case 7 RichTextBox1.SelectionAlignment = HorizontalAlignment.Right End Select End Select End Sub End Class
// 各ファンクションキーの処理 一部省略している処理があります String fname = ""; switch(flag) { case 0: //ファイル switch(e.KeyIndex) { case 1: richTextBox1.Clear(); break; case 2: if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { fname = openFileDialog1.FileName; richTextBox1.LoadFile(fname); } break; case 3: if (fname != "") { richTextBox1.SaveFile(fname); } break; case 4: if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { richTextBox1.LoadFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); } break; case 5: pageSetupDialog1.PageSettings = new System.Drawing.Printing.PageSettings(); pageSetupDialog1.ShowDialog(); break; case 6: printDialog1.ShowDialog(); break; case 7: if(MessageBox.Show("終了しますか?", "終了", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.OK) { this.Close(); } break; } break; case 1: //編集 switch(e.KeyIndex) { case 1: richTextBox1.Undo(); break; case 2: richTextBox1.Redo(); break; case 3: richTextBox1.Cut(); break; case 4: richTextBox1.Copy(); break; case 5: richTextBox1.Paste(); break; case 6: richTextBox1.SelectAll(); break; case 7: string str = richTextBox1.SelectedText; richTextBox1.Find(str, RichTextBoxFinds.MatchCase); break; } break; case 2: //書式 switch(e.KeyIndex) { case 1: fontDialog1.ShowDialog(); richTextBox1.SelectionFont = fontDialog1.Font; richTextBox1.SelectionColor = fontcolor; break; case 2: colorDialog1.ShowDialog(); fontcolor = colorDialog1.Color; richTextBox1.SelectionColor = fontcolor; break; case 3: richTextBox1.SelectionBackColor = Color.Yellow; break; case 4: richTextBox1.SelectionBackColor = richTextBox1.BackColor; break; case 5: richTextBox1.SelectionAlignment = HorizontalAlignment.Left; break; case 6: richTextBox1.SelectionAlignment = HorizontalAlignment.Center; break; case 7: richTextBox1.SelectionAlignment = HorizontalAlignment.Right; break; } break; } } } }
まとめ
ファンクションキーは、直観的にかつ1回キーを押すだけで機能が使えるため、メニューに深い階層を組み込む際に上手に使えば、アプリケーションのアクセス性を高めることができます。
GcClassicFunctionKeyは、本アプリケーションでも使用したように複数のスタイルセットやキーセットを使うことができ、それぞれのキーにテキストとアイコンを表示させることができるため、メニューやツールボックスと同じような使い方ができます。
Windowsになってからファンクションキーはあまり使われなくなっていますが、GcClassicFunctionKeyコントロールを使って、キー1つで思い通りに操作できるユーザーインターフェイスを持ったアプリケーションを作ってみてはいかがでしょうか。