找回密码
 立即注册

QQ登录

只需一步,快速开始

beitesting

中级会员

28

主题

92

帖子

794

积分

中级会员

积分
794

活字格认证

beitesting
中级会员   /  发表于:2014-4-17 20:05  /   查看:4911  /  回复:3
NET的Spread版本:7.0 SP2
Spread的EditModePermanent属性的值设定为True场合,
如何实现在Spread的单元格内单击Enter键焦点移动到其他的控件上

3 个回复

倒序浏览
beitesting
中级会员   /  发表于:2014-4-17 20:37:00
沙发
实现方法:
    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
回复 使用道具 举报
beitesting
中级会员   /  发表于:2014-4-17 20:38:00
板凳
对应方法已经找到了,不好意思,请关闭这个问题吧。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-22 09:30:00
地板
回复 3楼beitesting的帖子

好的,感谢反馈问题结果。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部