MESCIUS SPREAD for Windows Forms 17.0J サンプルコード集
非編集セルでのキー入力を検知する

FpSpreadクラスのKeyDown/KeyPress/KeyUpイベント(いずれもSystem.Windows.Forms.Controlから継承)を利用することで、シート上での各キー入力を検知することができます。

  • 各Keyイベントの詳細についてはMSDNライブラリをご参照ください。
  • シート上にフォーカスが存在する場合にはSPREADコントロールのKeyイベントを利用してください。(FormのKeyイベントでは取得できない場合があります)
  • 全てのキー入力に対し、KeyUp/KeyPress/KeyDownの各イベントが常に発生する訳ではありません。
  • 独自の機能を実装するためにファンクションキー([F2]〜[F4]など)のKeyイベントを発生させたい場合は、あらかじめこれらのキーに対する入力マップの定義を無効にしておく必要があります。
  • セルが編集中の場合や常時入力モード(EditModePermanentプロパティ=True)を定義している場合、[F10]キー押下による SPREADのKeyDownイベントが発生しないことがあります。 Windowsでは[F10]キーを[Alt]キーと同機能(メニューバーをアクティブにする)として使っており、SPREAD側ではこの動作を制御することができません。
  • 入力マップによる動作は、設定されているシートの操作モード(SheetViewクラスのOperationModeプロパティ)やセルの編集状態に大きく関係します。そのため、変更時には十分な動作検証を行う必要があります。
  • 編集中セルでは入力用のエディタコントロール(FpSpread1.EditingControl)が使われます。当コントロールはOSが提供するエディタクラスを利用しているため、例えば編集中セルにおける[BackSpace]キーなど、一般的な入力補助機能を制御することはできません。

 private void fpSpread1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
 {
   Console.WriteLine("KeyDownイベント:" + e.KeyCode.ToString());
 }

 private void fpSpread1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
 {
   Console.WriteLine("KeyPressイベント:" + e.KeyChar.ToString());
 }

 private void fpSpread1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
 {
   Console.WriteLine("KeyUpイベント:" + e.KeyCode.ToString());
 } 
 Private Sub FpSpread1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles FpSpread1.KeyDown
   Console.WriteLine("KeyDownイベント:" + e.KeyCode.ToString)
 End Sub

 Private Sub FpSpread1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles FpSpread1.KeyPress
   Console.WriteLine("KeyPressイベント:" + e.KeyChar.ToString)
 End Sub

 Private Sub FpSpread1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles FpSpread1.KeyUp
   Console.WriteLine("KeyUpイベント:" + e.KeyCode.ToString)
 End Sub 

 

 


© MESCIUS inc. All rights reserved.