实现方法:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.RowCount = 3
FpSpread1.ActiveSheet.ColumnCount = 4
FpSpread1.EditModePermanent = True
'フォーカス時のEnterキー押下による動作を「次列へ移動」とします。
Dim im As New InputMap
im = FpSpread1.GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextColumnWrap)
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_EditModeStarting(sender As Object, e As EditModeStartingEventArgs) Handles FpSpread1.EditModeStarting
If Me.FpSpread1.ActiveSheet.ActiveColumnIndex = Me.FpSpread1.ActiveSheet.ColumnCount - 1 AndAlso Me.FpSpread1.ActiveSheet.ActiveRowIndex = Me.FpSpread1.ActiveSheet.RowCount - 1 Then
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)
Else
Dim im1 As New FarPoint.Win.Spread.InputMap
im1 = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im1.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
End If
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
Console.WriteLine("Enterキー押下によるKeyDown")
Me.TextBox1.Focus()
End If
End Sub |