【セル型全般】 編集中のセルでKeyイベントが発生しません

文書番号 : 33587     文書種別 : 使用方法     登録日 : 2012/11/14     最終更新日 : 2012/11/14
文書を印刷する
対象製品
SPREAD for Windows Forms 7.0J
詳細
セルの編集時、押下されたキーによってはKeyイベントが発生しないケースがあります。この場合、編集中のエディターコントロール(EditingControl)にマッピングすることで、各Keyイベントを発生させることができます。但し、入力マップの定義によっては、必ずしも発生するとは限りませんので、十分な動作確認が必要です。

※セルが編集モードの場合や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


◎サンプルコード(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);
}
関連情報
キーワード
「編集用コントロール」