【セル型全般】 編集中セルにてEnterキー押下によるKeyイベントを取得する方法

文書番号 : 33567     文書種別 : 使用方法     登録日 : 2012/11/14     最終更新日 : 2012/11/14
文書を印刷する
対象製品
SPREAD for Windows Forms 7.0J
詳細
SPREADでは予め、特定のキー押下に対するデフォルトの入力マップが定義されています。編集中セルでのEnterキー押下では、通常KeyUpイベントのみ発生しますが、デフォルトの入力マップを無効とすることにより、Keyイベントの取得が可能となります。以下のサンプルコードではKeyDownイベントを取得しています。

◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  FpSpread1.EditModePermanent = True
  '' 編集中セルの Enterキー押下による動作を無効とします。
  Dim im As New FarPoint.Win.Spread.InputMap
  im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
  im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
End Sub

Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
  ''編集モードONの時、KeyDownイベントを取得する
  Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
  AddHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
End Sub

Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
  ''編集モードOFFの時、KeyDownイベントの関連付けを解除
  Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
  RemoveHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
End Sub

Private Sub FpSpread1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles FpSpread1.KeyDown
  If e.KeyCode = Keys.Enter Then
    Debug.WriteLine("Enterキー押下によるKeyDown")
  End If
End Sub


◎サンプルコード(C#)
private void Form1_Load(object sender, System.EventArgs e)
{
  fpSpread1.EditModePermanent = true; 
  // 編集中セルの Enterキー押下による動作を無効とします。
  FarPoint.Win.Spread.InputMap inputmap1;
  inputmap1 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  inputmap1.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None);
}

private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
  // 編集モードONの時、KeyDownイベントを取得する
  fpSpread1.EditingControl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.fpSpread1_KeyDown);
}

private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
{
  // 編集モードOFFの時、KeyDownイベントの関連付けを解除
  fpSpread1.EditingControl.KeyDown -= new System.Windows.Forms.KeyEventHandler(this.fpSpread1_KeyDown);
}

private void fpSpread1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
  if (e.KeyCode == Keys.Enter)
  {
    Console.WriteLine("EnterキーによるKeyDown");
  }
}
関連情報
キーワード
「編集用コントロール」