それぞれのキーの実行処理
各キーの処理も、イベントハンドラの引数「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つで思い通りに操作できるユーザーインターフェイスを持ったアプリケーションを作ってみてはいかがでしょうか。

