編集中のセルでKeyイベントが発生しません
対象製品
SPREAD for Windows Forms 8.0J
詳細
セルの編集時、押下されたキーによってはKeyイベントが発生しないケースがあります。この場合、編集中のエディターコントロール(EditingControl)にマッピングすることで、各Keyイベントを発生させることができます。但し、入力マップの定義によっては、必ずしも発生するとは限りませんので、十分な動作確認が必要です。
以下のコードでは、セルの編集モードON/OFFのタイミングで発生するEditModeOnおよびEditModeOffイベントを利用し、各Keyイベントのマッピングを行っています。用途に合わせて設定してください。
◎サンプルコード(VB)
◎サンプルコード(C#)
※セルが編集モードの場合やEditModePermanentプロパティが"True"である場合など、場合によっては[F10]キー押下によるKeyDownイベントが発生しないこともありますのでご注意ください。Windowsでは[F10]キーを[Alt]キーと同機能として使っており、SPREAD側ではこの動作を制御することができません。
以下のコードでは、セルの編集モードON/OFFのタイミングで発生するEditModeOnおよびEditModeOffイベントを利用し、各Keyイベントのマッピングを行っています。用途に合わせて設定してください。
◎サンプルコード(VB)
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
'Keyイベントをマッピングします
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
AddHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
Dim KeyPressHandler As KeyPressEventHandler = AddressOf FpSpread1_KeyPress
AddHandler FpSpread1.EditingControl.KeyPress, KeyPressHandler
Dim KeyUpHandler As KeyEventHandler = AddressOf FpSpread1_KeyUp
AddHandler FpSpread1.EditingControl.KeyUp, KeyUpHandler
End Sub
Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
'Keyイベントのマッピングを解除します
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
RemoveHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
Dim KeyPressHandler As KeyPressEventHandler = AddressOf FpSpread1_KeyPress
RemoveHandler FpSpread1.EditingControl.KeyPress, KeyPressHandler
Dim KeyUpHandler As KeyEventHandler = AddressOf FpSpread1_KeyUp
RemoveHandler FpSpread1.EditingControl.KeyUp, KeyUpHandler
End Sub
'Keyイベントをマッピングします
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
AddHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
Dim KeyPressHandler As KeyPressEventHandler = AddressOf FpSpread1_KeyPress
AddHandler FpSpread1.EditingControl.KeyPress, KeyPressHandler
Dim KeyUpHandler As KeyEventHandler = AddressOf FpSpread1_KeyUp
AddHandler FpSpread1.EditingControl.KeyUp, KeyUpHandler
End Sub
Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
'Keyイベントのマッピングを解除します
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
RemoveHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
Dim KeyPressHandler As KeyPressEventHandler = AddressOf FpSpread1_KeyPress
RemoveHandler FpSpread1.EditingControl.KeyPress, KeyPressHandler
Dim KeyUpHandler As KeyEventHandler = AddressOf FpSpread1_KeyUp
RemoveHandler FpSpread1.EditingControl.KeyUp, KeyUpHandler
End Sub
◎サンプルコード(C#)
private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
//Keyイベントをマッピングします
fpSpread1.EditingControl.KeyDown += new KeyEventHandler(this.fpSpread1_KeyDown);
fpSpread1.EditingControl.KeyPress += new KeyPressEventHandler(this.fpSpread1_KeyPress);
fpSpread1.EditingControl.KeyUp += new KeyEventHandler(this.fpSpread1_KeyUp);
}
private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
{
//Keyイベントのマッピングを解除します
fpSpread1.EditingControl.KeyDown -= new KeyEventHandler(this.fpSpread1_KeyDown);
fpSpread1.EditingControl.KeyPress -= new KeyPressEventHandler(this.fpSpread1_KeyPress);
fpSpread1.EditingControl.KeyUp -= new KeyEventHandler(this.fpSpread1_KeyUp);
}
{
//Keyイベントをマッピングします
fpSpread1.EditingControl.KeyDown += new KeyEventHandler(this.fpSpread1_KeyDown);
fpSpread1.EditingControl.KeyPress += new KeyPressEventHandler(this.fpSpread1_KeyPress);
fpSpread1.EditingControl.KeyUp += new KeyEventHandler(this.fpSpread1_KeyUp);
}
private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
{
//Keyイベントのマッピングを解除します
fpSpread1.EditingControl.KeyDown -= new KeyEventHandler(this.fpSpread1_KeyDown);
fpSpread1.EditingControl.KeyPress -= new KeyPressEventHandler(this.fpSpread1_KeyPress);
fpSpread1.EditingControl.KeyUp -= new KeyEventHandler(this.fpSpread1_KeyUp);
}
関連情報
キーワード
イベント