FunctionKeyDownイベントは、ファンクションキーボタンをキーボード上で押下したとき、または対応するボタンをマウスでクリックしたときに発生します。
FunctionKeyDown イベントに任意のコードを記述することで、ファンクションキー操作時に目的の動作を実現することができます。
次のサンプルコードでは、[F2]キーでフォーム上のコントロールをクリアする動作をファンクションキーボタンに追加する方法を示します。
Imports GrapeCity.Win.Bars
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' FunctionKeyButtonオブジェクトを作成します。
Dim FunctionKeyButton1 As New FunctionKeyButton
FunctionKeyButton1.FunctionKey = Keys.F2
FunctionKeyButton1.Text = "全てクリア"
' FunctionKeyButtonオブジェクトをGcFunctionKey コントロールに追加します。
GcFunctionKey1.FunctionKeyButtons.Add(FunctionKeyButton1)
End Sub
Private Sub GcFunctionKey1_FunctionKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles GcFunctionKey1.FunctionKeyDown
' [F2]キーが押されたときの動作を実装します。
If e.KeyCode = Keys.F2 Then
TextBox1.Clear()
NumericUpDown1.Value = 0
End If
End Sub
using GrapeCity.Win.Bars;
private void Form1_Load(object sender, EventArgs e)
{
// FunctionKeyButtonオブジェクトを作成します。
FunctionKeyButton functionKeyButton1 = new FunctionKeyButton();
functionKeyButton1.FunctionKey = Keys.F2;
functionKeyButton1.Text = "全てクリア";
// FunctionKeyButtonオブジェクトをGcFunctionKey コントロールに追加します。
gcFunctionKey1.FunctionKeyButtons.Add(functionKeyButton1);
}
private void GcFunctionKey1_FunctionKeyDown(object sender, KeyEventArgs e)
{
// [F2]キーが押されたときの動作を実装します。
if (e.KeyCode == Keys.F2)
{
textBox1.Clear();
numericUpDown1.Value = 0;
}
}
さらに、InteractiveMouse プロパティを False に設定すると、マウスによるボタンクリックを禁止し、キーボード操作のみを対象にできます。KeyRepeat プロパティは、キーを押し続けている間、
FunctionKeyDown イベントを繰り返し発生させるかどうかを指定します。
GcFunctionKey コントロールには
FunctionKeyDown イベントのほか、
ButtonClickイベントが搭載されており、イベント内で押下されたファンクションキーのキーコードやNameプロパティを取得することができます。
次のサンプルコードでは
ButtonClickイベントでイベントパラメータからキーコードおよびファンクションキーのNameプロパティを取得する方法を示します。
Private Sub GcFunctionKey1_ButtonClick(sender As Object, e As GrapeCity.Win.Bars.FunctionKeyButtonEventArgs) Handles GcFunctionKey1.ButtonClick
' イベントパラメータから押下されたキーを取得します。
If e.Button.FunctionKey = Keys.F1 Then
Console.WriteLine(e.Button.Name)
End If
' イベントパラメータから押下されたキーのNameプロパティを取得します。
If String.CompareOrdinal(e.Button.Name, "FunctionKeyButton2") = 0 Then
Console.WriteLine(e.Button.Name)
End If
End Sub
private void gcFunctionKey1_ButtonClick(object sender, GrapeCity.Win.Bars.FunctionKeyButtonEventArgs e)
{
// イベントパラメータから押下されたキーを取得します。
if (e.Button.FunctionKey == Keys.F1)
{
Console.WriteLine(e.Button.Name);
}
// イベントパラメータから押下されたキーのNameプロパティを取得します。
if (e.Button.Name == "functionKeyButton2")
{
Console.WriteLine(e.Button.Name);
}
}
GcFunctionKeyコントロールは、GcButton コントロールと同様にコントロールの2重クリック防止機能を搭載しています。
これらの詳細については、GcButton コントロールの「
2重クリックの防止」を参照してください。