找回密码
 立即注册

QQ登录

只需一步,快速开始

laonawuli

银牌会员

39

主题

146

帖子

3383

积分

银牌会员

积分
3383

活字格认证

laonawuli
银牌会员   /  发表于:2011-12-9 14:29  /   查看:6901  /  回复:6
1.默认的情况下,如果AllowDragDrop,则将光标落在Cell周围的虚线时,则进入等待拖拽状态(光标下方出现一个小方框)。如何让光标进入Cell后,就进入等待拖拽状态?
2.如何将某一个Cell拖拽范围限制在这个Cell所在的行中?
效果举例:Cell的坐标是[5,5].当鼠标已经开始拖拽Cell时,Cell只响应鼠标横向拖拽,例如虽然鼠标已经移动到[8,9],但界面上Cell的位置是[5,9]。
现在FP自带的效果是,Cell跟着鼠标走,鼠标到了哪个位置,Cell就去哪个位置。
3.目前是无法将Cell拖拽到已经Span过的Cell上面的,当拖拽到SpanCell的上方时,则会显示一个小红叉。如何控制这个小红叉在我想到的Cell的位置显示呢?例如我就是想让[0,0]位置的Cell(没有Span过)无法被拖拽过来的Cell覆盖,于是当别的Cell被拖拽到[0,0]时,就显示一个小红叉。

以上~多谢~!

6 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2011-12-9 16:40:00
沙发

回复 1# laonawuli 的帖子

laonawuli  你好,
1.关于问题 1 和 问题 3 ,Spread 目前不支持该功能,给你带来不便,很抱歉。
2.问题 2 可以在 DragDropBlockCompleted 事件中操作,实现方法如下:

  1.           private void fpSpread1_DragDropBlockCompleted(object sender, FarPoint.Win.Spread.DragDropBlockCompletedEventArgs e)
  2.         {
  3.             string test = this.fpSpread1.ActiveSheet.Cells[e.DestinationRowBegin, e.DestinationColumnBegin].Text;
  4.             if (e.DestinationRowBegin != e.RowBegin)
  5.             {
  6.                 this.fpSpread1.ActiveSheet.Cells[e.DestinationRowBegin, e.DestinationColumnBegin].Text = "";
  7.                 this.fpSpread1.ActiveSheet.Cells[e.RowBegin, e.DestinationColumnBegin].Text = test;
  8.             }
  9.         }
复制代码
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-12-9 17:15:00
板凳
原帖由 iceman 于 2011-12-9 16:40:00 发表
laonawuli  你好,
1.关于问题 1 和 问题 3 ,Spread 目前不支持该功能,给你带来不便,很抱歉。
2.问题 2 可以在 DragDropBlockCompleted 事件中操作,实现方法如下:[code]
          private void fpSpread1_DragDropBlockCompleted(object sender, FarPoint.Win


iceman大侠,我错了,如何限制最终数据的方式我明白,怪我没把问题描述清楚,我想问的是,如何将虚线边框也限制在Cell所在行中呢?如果你不清楚我描述的效果,那么可以拖拽最后一行的某个Cell,然后保持鼠标在sheet的最下方,然后移动鼠标,你会发现,Cell的虚线框在随着鼠标左右移动,不会往下移动(因为已经是最后一行了)。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-9 18:03:00
地板

回复 3# laonawuli 的帖子

laonawuli  大侠,Spread 目前不支持该功能,给你带来不便,真的很抱歉。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-9 18:13:00
5#

回复 4# iceman 的帖子

关于第三个问题,我有几个建议,不知道能否满足该功能:
依据如下:
1. Spread Cursor 图标取自系统。 Spread 下有 Cursor 属性,通过 fpSpread1.Cursor 属性可以设置鼠标图标的样式,可以参考帮助文档。
2.通过 fpSpread1.Cursor.HotPot.X 和 fpSpread1.Cursor.HotPot.X 可以取得当前鼠标位置,这样可以确定鼠标位置是否在某一单元格上。
3.再通过 e.Cancel 取消该拖拽操作。
这样就模拟出了类似拖拽到 SpanCell 上效果。
具体代码我没有实现,不知道对你是否有帮助。周末愉快~
回复 使用道具 举报
laonawuli
银牌会员   /  发表于:2011-12-10 17:51:00
6#
原帖由 iceman 于 2011-12-9 18:13:00 发表
关于第三个问题,我有几个建议,不知道能否满足该功能:
依据如下:
1. Spread Cursor 图标取自系统。 Spread 下有 Cursor 属性,通过 fpSpread1.Cursor 属性可以设置鼠标图标的样式,可以参考帮助文档。
2.通过 fpSpread1.Cursor.HotPot.X 和 fpSpread1.Cursor.HotPot.X 可以取得当前鼠标位置,这样可以确


iceman 提供的思路已经非常足够,代码我自己可以实现~

另外,多谢the gift from grapecity ,very very thanks!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-12 11:50:00
7#

回复 6# laonawuli 的帖子

还要恭喜你获得 GCDN  助人为乐奖~:share:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部