junlingzhu2002 发表于 2012-3-14 16:00:00

Tab,Enter键的使用

在MR的一行中有4个Cell,第一个Cell中输入数据,
如果按Tab键,跳到第4个Cell,
如果按Enter键,跳到第2个Cell
我想把他写CellValldating里,可以实现吗

robert 发表于 2012-3-15 09:05:00

在Validating里不能实现这样的能力。
对于Tab键的移动顺序,可以通过设置Cell上的TabIndex属性来设置。如果希望按Tab键跳过某个Cell可以设置Cell上TabStop属性来完成。
对于Enter键,必须自定义一个Action。然后把Enter键指定到这个Action上。


    Public Class CustomNextForEnterKey
      Implements IAction

      Public Function CanExecute(ByVal target As GcMultiRow) As Boolean Implements IAction.CanExecute
            Return True
      End Function

      Public ReadOnly Property DisplayName() As String Implements IAction.DisplayName
            Get
                Return Me.ToString()
            End Get
      End Property

      Public Sub Execute(ByVal target As GcMultiRow) Implements IAction.Execute
            If target.CurrentCellPosition.CellIndex = 0 Then
                target.CurrentCellPosition = New CellPosition(target.CurrentCellPosition.RowIndex, 1)
            End If
      End Sub
    End Class

junlingzhu2002 发表于 2012-3-15 15:07:00

谢谢。
:)

robert 发表于 2012-3-16 08:56:00

不客气,很高兴能帮到你。

junlingzhu2002 发表于 2012-3-16 10:29:00

经常能:D

junlingzhu2002 发表于 2012-3-19 09:56:00

不好意思补充问一下,
如果按Tab键,第2个Cell,第3个Cell里存在数据跳到第4个Cell,
不存在数据跳到第2个Cell,
如果按Enter键,永远跳到第2个Cell

robert 发表于 2012-3-20 08:13:00

如果需要条件的话就要和Enter一样自己写Action来实现。用TabIndex和TabStop属性只能控制固定的顺序。

junlingzhu2002 发表于 2012-3-22 13:19:00

把你上面给的代码复制到一个新的Class.vb里,然后该怎么办呀,
怎么把Enter键或Tab键指定到这个Action上。

robert 发表于 2012-3-23 15:03:00

回复 8# junlingzhu2002 的帖子


GcMultiRow1.ShortcutKeyManager.Unregister(Keys.Enter)
GcMultiRow1.ShortcutKeyManager.Register(New CustomNextForEnterKey(), Keys.Enter)

junlingzhu2002 发表于 2012-3-26 10:47:00

不好意思,我还是不太明白,
按你给的代码追加后,按下Enter键后,
怎么什么反应都没有呀
页: [1] 2
查看完整版本: Tab,Enter键的使用