找回密码
 立即注册

QQ登录

只需一步,快速开始

rbgongming

论坛元老

2

主题

118

帖子

1万

积分

论坛元老

积分
12714

活字格认证微信认证勋章元老葡萄

QQ
最新发帖
rbgongming
论坛元老   /  发表于:2015-7-31 11:50  /   查看:5001  /  回复:6
如附件,合并的单元格获得焦点后,按tab键,为什么不是2D获得焦点,
而是3D获得焦点,如果想要2D获得焦点,应该怎么对应。

以上,求解答,非常感谢!

WindowsApplication3.zip

329.35 KB, 下载次数: 190

把简单的事做好就是不简单,
把平凡的事做好就是不平凡。

6 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-7-31 15:25:00
沙发
您好,
可以通过自定义快捷键的方式实现:
  1.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.         Dim im As New FarPoint.Win.Spread.InputMap
  3.         im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
  4.         im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumn)
  5.     End Sub
复制代码

希望能够帮助到您。
回复 使用道具 举报
rbgongming
论坛元老   /  发表于:2015-7-31 15:41:00
板凳
回复 2楼frank.zhang的帖子

这样的话,当光标移动到最后一列,就不能跳到下一行了。
这个怎么解决。
把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-7-31 17:29:00
地板
您好,
这个问题我们正在调查,目前的进度是,默认的情况下,Tab触发的是MoveToNextColumnWrap事件。
但是,在合并的单元格会掉到下面的格子。MoveToNextColumn会移动到右边的格子,但是不能移到下一行。
由于验证需要时间,这个问题,我们下周一会继续为您调查。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-3 13:41:00
5#
您好,
非常抱歉,让您久等了。实现的思路的通过自定义的Action来实现。
  1.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.         Me.FpSpread1.ActiveSheet.ColumnCount = 6
  3.         Me.FpSpread1.ActiveSheet.RowCount = 5
  4.         Dim im As New FarPoint.Win.Spread.InputMap
  5.         Dim am As New FarPoint.Win.Spread.ActionMap
  6.         im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
  7.         am = FpSpread1.GetActionMap()
  8.         im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), "HideRow")
  9.         am.Put("HideRow", New HideRowAction())
  10.     End Sub
  11.     Private Class HideRowAction
  12.         Inherits FarPoint.Win.Spread.Action
  13.         Public Overrides Sub PerformAction([source] As Object)
  14.             If TypeOf [source] Is SpreadView Then
  15.                 Dim spread As SpreadView = CType([source], SpreadView)
  16.                 Dim sheet As SheetView = spread.Sheets(spread.ActiveSheetIndex)
  17.                 Dim rang As CellRange = sheet.GetSpanCell(sheet.ActiveRowIndex, sheet.ActiveColumnIndex)
  18.                 Dim i As Integer
  19.                 If (rang Is Nothing) Then
  20.                     i = 1
  21.                 Else
  22.                     i = rang.ColumnCount
  23.                 End If
  24.                 If sheet.ActiveColumnIndex = (sheet.ColumnCount - i) Then
  25.                     sheet.SetActiveCell(sheet.ActiveRowIndex + 1, 0)
  26.                 Else
  27.                     sheet.SetActiveCell(sheet.ActiveRowIndex, sheet.ActiveColumnIndex + i)
  28.                 End If
  29.             End If
  30.         End Sub 'PerformAction
  31.     End Class 'HideRowAction
复制代码

希望能够帮助到您。

评分

参与人数 1满意度 +5 收起 理由
rbgongming + 5 虽然没有很好的解决办法,但是还是谢谢你的耐心解答

查看全部评分

回复 使用道具 举报
rbgongming
论坛元老   /  发表于:2015-8-3 18:54:00
6#
回复 5楼frank.zhang的帖子

感谢你的回复,这种思路最初想过,但是一旦把Tab放出来安全度很低,
项目中很多写的都是共同,不是很安全,在和客户商谈,等客户答复吧!

希望开发团队放出来一个属性,能实现这个功能,这样很方便。
把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-8-4 09:18:00
7#
您好,
感谢您的宝贵意见。我会将您的反馈提交给产品组,在对产品是否会增加这个需求进行评估,如果有进一步的反馈,我会第一时间通知您。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部