ファンクションキーを押すと非アクティブなフォームに配置されたファンクションキーコントロールでもイベントが発生します
対象製品
PlusPak for Windows Forms 5.0J
詳細
この現象はGcFunctionKeyコントロールの仕様に基づく動作です。
GcFunctionKeyコントロールをマウスで操作した場合、FunctionKeyDownイベントは操作を行ったコントロールでのみ発生します。これに対してキーボードのファンクションキー入力で操作した場合はアプリケーションに含まれるすべてのコントロールで同イベントが発生します。
アクティブなフォームに配置されたGcFunctionKeyコントロールでのみイベントを処理するには、イベントハンドラを次の例のように記述します。
GcFunctionKeyコントロールをマウスで操作した場合、FunctionKeyDownイベントは操作を行ったコントロールでのみ発生します。これに対してキーボードのファンクションキー入力で操作した場合はアプリケーションに含まれるすべてのコントロールで同イベントが発生します。
アクティブなフォームに配置されたGcFunctionKeyコントロールでのみイベントを処理するには、イベントハンドラを次の例のように記述します。
[VB]
Private Sub GcFunctionKey1_FunctionKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles GcFunctionKey1.FunctionKeyDown
If Me Is Form.ActiveForm
'ファンクションキー押下処理を記述します。
'イベント処理の完了を設定します。
e.Handled = True
End If
End Sub
Private Sub GcFunctionKey1_FunctionKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles GcFunctionKey1.FunctionKeyDown
If Me Is Form.ActiveForm
'ファンクションキー押下処理を記述します。
'イベント処理の完了を設定します。
e.Handled = True
End If
End Sub
[C#]
private void gcFunctionKey1_FunctionKeyDown(object sender, KeyEventArgs e)
{
if( this == Form.ActiveForm )
{
//ファンクションキー押下処理を記述します。
//イベント処理の完了を設定します。
e.Handled = true;
}
}
private void gcFunctionKey1_FunctionKeyDown(object sender, KeyEventArgs e)
{
if( this == Form.ActiveForm )
{
//ファンクションキー押下処理を記述します。
//イベント処理の完了を設定します。
e.Handled = true;
}
}
この文書は、以前は次のFAQ IDで公開されていました : 12793